无法在 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Express 2012 无法添加到 Visual Studio Team Services 的连接
无法在 Visual Studio 2012 中的 opengl 中绘图
无法在 Visual Studio 2012 中编译 TypeScript 文件
无法在 Visual Studio 2012 中正确查看属性窗口
无法在 Windows Server 2008 上运行 Visual Studio 2012 远程调试器
无法在 SSIS 2012 中显示 Visual Studio Tools for Application Editor