问题 TypeScript不使用WE3和TS 0.9.1.1进行编译


我刚刚升级到最新版本的WebEssentials v3,我的ASP MVC 4项目中的TS文件不再编译为JS了。我验证了 选项 - >文本编辑器 - > TypeScript - >项目 - >自动编译作为项目一部分的TypeScript文件 检查选项,但保存或编译项目时没有任何反应。我已经尝试删除WE2创建的现有.js和.min.js文件,但这没有帮助。我尝试将新的TS文件添加到我的项目中,但没有生成JS文件。我重新安装了TS 0.9.1.1,但没有帮助。

Sooooo该怎么办?我错过了一些明显的东西吗有些东西不起作用或者我只是抱错了吗?

我需要回到WE2吗?

更新:我甚至创建了一个全新的ASP MVC 4 C#项目,以验证它不仅仅是我原来的项目,但我得到了相同的结果。

有趣的是,我刚刚创建了一个新的TypeScript项目,我的TS文件在保存时正确编译...所以这很有趣..


6941
2017-08-26 14:00


起源

所有这些都在TypeScript Compile-On-Save Wiki页面中进行了解释: typescript.codeplex.com/wikipage?title=Compile-on-Save - Jaben


答案:


有一些链接 改变日志 WE3,这里是一个描述如何启用编译保存功能,请参阅 http://typescript.codeplex.com/wikipage?title=Compile-on-Save 详情。

我创建了一个名为的nuget包 Ltc.MSBuild.TS0911WE3.targets 哪个会为你做的,只是打开 Package Manager Console, 输入 Install-Package Ltc.MSBuild.TS0911WE3.targets

Ltc.MSBuild.TS0911WE3.targets 在nuget.org上。


10
2017-08-26 17:36



优秀。我创建了一个测试项目来验证这是否有效。这是一个比将所有必需的代码复制/粘贴到.xproj文件中更优雅的解决方案。 - Alex Dresko
谢谢!这有很大帮助。 - Doug
嗯,对我不起作用。它编译构建,但不保存。 :/ - Gleno


我不确定这是否是解决问题的正确方法,但这就是我在我的项目中使用“编译保存”所做的工作......

注意到从新的启动时Compile On Save工作 使用TypeScript的HTML应用程序 我和它的非工作ASP MVC项目进行了比较。事实证明,我的ASP MVC项目缺少这段代码。

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

复制/粘贴到我的ASP MVC项目中再次给了我Compile On Save支持。当然,它仍然不完全符合我的预期。生成的JS文件不会自动添加到项目中,因此我必须手动执行此操作。我还必须手动将JS文件与TS文件分组,以模仿我在WE2中获得的相同体验。

希望能帮助别人。很想听听有关解决方案的一些反馈。


3
2017-08-26 14:44



+1感谢分享。据称,下一个版本将得到更好的支持。就个人而言,我们一直在使用咕噜声 github.com/basarat/grunt-ts - basarat
感谢分享这个 - 它的工作原理但令人沮丧的是它还意味着您需要在构建服务器上安装TypeScript(如果有的话)。令人沮丧的是,标记为“编译保存”的选项实际上是“在保存或构建时编译”。现在我已经决定恢复到Web Essentials 2.9,这样我就能够单独“编译保存”了。 - John Reilly


确保您的.proj文件具有TypeScriptCompile XML部分。如果不存在,您可以从typescript项目中复制。

这是规范: https://msbuildtypescript.codeplex.com/


2
2017-08-26 14:19



HI @bassara。据我了解,该建议在.xproj文件中添加了“在项目编译上编译TS”功能。这是一个明智的补充,但不完全是我在OP中提出的问题。如果问题措辞不当,我道歉。此外,在将您的建议添加到我的项目文件后,我在编译时收到此错误:错误1无法从程序集c:\ projects \ Test \ NewTsWeTest \ NewTsWeTest \ MSBuild.TypeScriptCompile.dll加载“CompileTypeScriptFiles”任务。无法加载文件或程序集...... - Alex Dresko


使用“网络必需品”工具  (免费,推荐)启用Web essentials选项中的预览窗格

工具 - >选项 - > Web要点 - >打字稿:显示预览窗格[X]

现在每次保存一个打开的TS文件时,web essentials都会确保文件编译(因此它可以显示它),并且您可以在项目运行时更新您的javascript代码。


1
2018-03-02 15:26