【问题标题】:TypeScript not compiling with WE3 and TS 0.9.1.1TypeScript 无法与 WE3 和 TS 0.9.1.1 一起编译
【发布时间】:2013-08-26 14:00:29
【问题描述】:

我刚刚升级到最新版本的 WebEssentials v3,我的 ASP MVC 4 项目中的 TS 文件不再编译为 JS。我验证了 Options --> Text Editor --> TypeScript --> Project --> Automatically compile TypeScript files which are part of a project 选项被选中,但是当我保存或编译时没有任何反应我的项目。我尝试删除 WE2 创建的现有 .js 和 .min.js 文件,但这没有帮助。我尝试在我的项目中添加一个新的 TS 文件,但没有生成 JS 文件。我重新安装了 TS 0.9.1.1 并没有帮助。

太棒了怎么办?我错过了一些明显的东西吗?是不是有些东西不起作用,或者我只是有错误的期望?

我需要回到 WE2 吗?

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

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

【问题讨论】:

标签: asp.net-mvc typescript web-essentials


【解决方案1】:

WE3 的change log 中有一些链接,这里是描述如何启用 compile-on-save 功能的链接,详见http://typescript.codeplex.com/wikipage?title=Compile-on-Save

我创建了一个名为 Ltc.MSBuild.TS0911WE3.targets 的 nuget 包,它可以为您解决问题,只需打开 Package Manager Console,输入 Install-Package Ltc.MSBuild.TS0911WE3.targets

转到 nuget.org 上的 Ltc.MSBuild.TS0911WE3.targets

【讨论】:

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

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

在从一个新的 HTML Application with TypeScript 项目开始时注意到 Compile On Save 有效后,我对该项目和我的非工作 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 项目中再次为我提供了“保存时编译”支持。当然,这仍然不是我所期望的。生成的 JS 文件不会自动添加到项目中,因此我必须手动执行此操作。我还必须手动将 JS 文件与 TS 文件分组,以模仿我在 WE2 中获得的相同体验。

希望对某人有所帮助。希望听到有关解决方案的一些反馈。

【讨论】:

  • +1 感谢分享。据称下一个版本将有更好的支持。就个人而言,我们一直在使用 grunt github.com/basarat/grunt-ts
  • 感谢分享 - 它可以工作,但令人沮丧的是,这也意味着您需要在构建服务器上安装 TypeScript(如果有的话)。令人沮丧的是,标记为“Compile On Save”的选项实际上是“Compile on Save or Build”。现在我决定恢复到 Web Essentials 2.9,这样我就可以单独“在保存时编译”了。
【解决方案3】:

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

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

【讨论】:

  • 嗨@bassara。据我了解,该建议在 .xproj 文件中添加了“在项目编译时编译 TS”功能。这是一个明智的补充,但不完全是我在 OP 中所要求的。如果问题措辞不当,我深表歉意。此外,在将您的建议添加到我的项目文件后,我在编译时收到此错误:错误 1 ​​无法从程序集 c:\projects\Test\NewTsWeTest\NewTsWeTest\MSBuild.TypeScriptCompile.dll 加载“CompileTypeScriptFiles”任务。无法加载文件或程序集...
【解决方案4】:

使用“Web Essentials”工具(免费,推荐)启用 Web Essentials 选项中的预览窗格

工具 --> 选项 --> Web 基本要素 --> Typescript: Show Preview Pane[X]

现在,每次您保存打开的 TS 文件时,Web Essentials 都会确保文件编译(以便显示),并且您可以在项目运行时更新您的 javascript 代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-05
    • 2016-06-17
    • 1970-01-01
    • 2021-07-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多