无法在 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.config
、web.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 错误:
export
ing 一个不在模块内部的类 (v 0.9.5)。
如果还有更多此类错误请告诉我,我会在此处添加。
【讨论】:
以上是关于无法在 Visual Studio 2012 中编译 TypeScript 文件的主要内容,如果未能解决你的问题,请参考以下文章