无法在 Visual Studio 2012 中编译 TypeScript 文件

Posted

技术标签:

【中文标题】无法在 Visual Studio 2012 中编译 TypeScript 文件【英文标题】:Cannot compile TypeScript files in Visual Studio 2012 【发布时间】:2012-10-14 15:05:34 【问题描述】:

我下载并安装了 VS 2012 的 TypeScript 扩展,我得到了我的第一个示例编译通过手动将 ts 文件拖到 tsc.exe 文件上!因为没有其他方法可以编译该文件。

我不想每次调试页面时都手动执行此操作!我在网上阅读了大约 5 篇文章,但没有一个解决方案有效。我尝试在 Windows 中将 TypeScript 编译器添加到 PATH,我尝试通过 Nuget 包管理器下载和安装 Sholo 的东西,我尝试了这些页面:

    Using TypeScript in cshtml files Visual Studio TypeScript Options Debugging TypeScript code with Visual Studio Cannot compile typescript using tsc node module TypeScript - Visual Studio - d3 Visual Studio 2012 TypeScript project ignoring two files during compile TypeScript / Visual Studio 2012 / Compilation parameters Using TypeScript in an existing Visual Studio Web Site project Visual Studio TypeScript Options Compile generated files in Visual Studio

没有一个解决方案奏效。

我什至已经下载并安装了 Visual Studio 的 Web Essentials 插件,然后转到“选项”菜单,然后选择“在 Build = True 时编译所有 TypeScript 文件”和“在 Save = True 时编译 TypeScript” - 但没有任何效果。

我已经阅读了整个 TypeScript 网站、规范,甚至他们在 codeplex 网站上的讨论选项卡。

当我将更改保存到.ts 文件按 F5/Debug/Build 时,如何让 TypeScript 编译?

*除非绝对必要,否则我真的不想要任何第三方脚本/插件等。我见过其中的几个,只是……没有意义。我还不如只写纯 javascript

【问题讨论】:

你能在 Visual Studio 中创建 TypeScript 项目吗?创建新项目时是否显示为选项? @MattBurland 新建项目对话框中的唯一选项是HTML Application with TypeScript。但.cshtml 文件或 Razor 代码在此项目中不起作用。我尝试将所有基于 WebMatrix/Razor 的引用和 bin 文件夹添加到此项目类型。但是,是的,该选项确实有效,唯一的问题是我无法让任何服务器端代码文件工作。很奇怪。 我一直在更新这个问题,因为似乎有很多其他人遇到了同样的问题,但似乎没有一个解决方案适用于所有人。截至 25/10/12 我仍然遇到这个问题。因此,如果有人有任何想法或可能的解决方案,我将不胜感激! 我也有同样的问题:( @Nikos:我没有找到可行的解决方案,所以我最终编写了一个可以免费下载的小应用程序,它将您的任何打字稿文件发送到编译器,然后编译到 javascript 文件中。 onthefly.codeplex.com 这不是 解决方案,但它是我想出的最好的解决方案,并且有效。我希望它有所帮助。如果您尝试并需要任何帮助,请告诉我,我会尽力而为。 【参考方案1】:

您必须确保 .ts 文件的 BuildAction 必须是 TypeScriptCompile。 我已将这些行添加到 (.csproj) 项目文件的末尾。 (在关闭项目标签之前) 而且它似乎有效。

 <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES3</TypeScriptTarget>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
 </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES3</TypeScriptTarget>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
</PropertyGroup>
 <Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />

【讨论】:

谢谢你!真的有帮助!【参考方案2】:

当我将 .js 文件重命名为 .ts 时,我遇到了类似的问题。您必须右键单击并将新的 TypeScript 文件添加到您的项目中,以便您的 .csproj 识别应该在此 .ts 文件上使用 TypeScript 编译器。

当您看到展开 .ts 文件的箭头时,您将知道它是正确的。

【讨论】:

我刚去添加新项目,然后向下滚动列表,那里没有 TypeScript 文件:( - 也应该有,因为我安装了 TypeScript TypeScriptLanguageService(我读过...SDKs/TypeScript/ 文件夹中的某个应该安装文件扩展名以便它显示在列表中的地方。 谢谢。这是我昨晚发现 TypeScript 时下载的第一件事。 :) 我刚刚设法让它工作!感谢您的回答,这让我想到......即使我无法从“添加新项目”对话框中添加新的 TypeScript 文件,我确实更改了当前 TypeScript 文件的文件名,然后将其改回原始文件名,然后我右键单击我的项目名称并单击构建,现在它正在编译,就像在你的图片中一样。谢谢@ryan 对不起@ryan,昨晚听了你的建议后它奏效了。但是今天又来了,就是编译不了ts文件,所以我又按照你的步骤,还是编译不出来。关于可能导致此问题的任何其他想法? 不,哈哈。它甚至都没有尝试编译(我猜,因为我知道我没有其他事情可做。)【参考方案3】:

如果您将.js 文件更改为.ts 文件,您可以转到Visual Studio 中的属性面板并将Build Action 更改为TypeScriptCompile。这是您更改文件时缺少的内容。这可以让您免于删除和重新添加文件。

【讨论】:

您可能还需要更新您的项目文件:stevefenton.co.uk/Content/Blog/Date/201210/Blog/… 我刚刚看了链接,这是哪个项目文件?我有packages.configweb.config,还有 Visual Studio 解决方案文件。我的网站是“网站”而不是“项目”——我认为存在差异,因为两种类型都会生成不同的文件。 啊,是的!该网站实际上没有项目文件。除了使用 TypeScriptCompile 属性之外,我不确定您还需要为网站做什么才能使其正常工作。 该死的。看起来我将不得不使用第 3 方解决方案,而 MS 推出了对 ts 的更好支持。感谢您的帮助@Sohnee! 没问题...您可能只想自己启动编译器,也许有一个小批处理文件,您可以双击它来执行您正在处理的所有文件:tsc MyFile.ts【参考方案4】:

我遇到了同样的问题。我无法将新的 .ts 文件添加到项目中。从 .js 重命名为 .ts 文件后未编译。它甚至没有在命令行中使用 tsc 编译。

但是!在 Windows 资源管理器中重新创建文件后,它已成功编译。在脚本文件夹中的 Windows 资源管理器(不是 Visual Studio)中手动创建文件并将其包含到项目中之后 - 所有工作。我无法检测到这两个文件之间的更改。但是,如果您在资源管理器中创建文本文件,请将其重命名为 .ts,然后将其包含在项目中并将文件的 Build Action 设置为 TypeScriptCompile - 它可以工作。

【讨论】:

很高兴您找到了解决这种烦人问题的方法。 :-) 我编写了一个小应用程序 (onthefly.codeplex.com),只需单击一下按钮,即可将您的文件发送到编译器。这似乎是最合乎逻辑的事情,因为我想不出任何其他方法来编译它。但是,谢谢你的回答。很高兴知道还有其他方法可以解决这个问题。 :)【参考方案5】:

插头

我创建了一个 NuGet 包,它为您的项目添加了一个 afterbuild 目标,因此所有包含的 ts 文件都被编译为 js。

安装包 TypeScript.Compile

【讨论】:

【参考方案6】:

我遇到了同样的问题。我更新了 Web Essentials 扩展并解决了问题。如果你有 web Essentials 扩展,你可以试试。

【讨论】:

【参考方案7】:

请检查您是否有无效的 TypeScript。有一些 TypeScript 错误未显示在错误列表中,但它们会阻止 TypeScript Compile-On-Save 并在 Visual Studio 状态栏中显示 Output generation failed 消息。

这些是可能导致此问题的 TypeScript 错误:

exporting 一个不在模块内部的类 (v 0.9.5)。

如果还有更多此类错误请告诉我,我会在此处添加。

【讨论】:

以上是关于无法在 Visual Studio 2012 中编译 TypeScript 文件的主要内容,如果未能解决你的问题,请参考以下文章