Web Essentials:编译构建中的所有TypeScript文件不起作用

时间:2013-05-02 08:40:55

标签: visual-studio typescript web-essentials

正如标题所示:我已通过Tools>激活此选项Options> Web Essentials窗口,但文件未在构建时编译。没有任何警告或错误,专用于Web Essentials的“输出”面板显示有关编译内容的消息,但实际上并未执行任何操作。实际上没有编辑出现在输出中的那些文件。

有没有办法找出它到底在做什么?我已经对项目文件进行了手动修改。我没有在项目文件中看到任何与Web Essentials相关的内容。

有没有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:6)

即使使用WebEssentials来控制是否应该在构建工作中编译所有文件,它也可能会带来一些问题:

  • 如果您正在使用构建机器,与TFS等持续集成,则构建过程将不会应用相同的规则,因为WebEssentials是Visual Studio扩展,并且构建过程无法访问; < / p>

  • 您需要重建项目以测试您的更改,除非您还将WebEsentials选项“在保存时编译TypeScript”设置为true,如果您在构建期间也进行编译,那么可能有点多余; < / p>

解决方案:

  • 将WebEssentials“保存时编译TypeScript”设置为true;
  • 将TypeScript .targets文件添加到.csproj文件中。为此,使用文本编辑器在Visual Studio外部打开YourProject.csproj文件:
  • 将“导入部分”更改为:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
.
.
.
<Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />

这足以确保在构建期间使用默认选项调用TypeScript编译器来构建所有.js文件。

  • 如果您希望使用自定义编译器选项构建文件,请为每个构建定义设置设置(例如Debug / Release):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    .
    .
    .
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptIncludeComments>false</TypeScriptIncludeComments>
    <TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>

此设置还允许您为每个项目设置不同的设置,这有利于提高灵活性。

在构建过程中,将使用当前构建定义中定义的设置调用TypeScript编译器。例如,在上面的设置中将TypeScriptTarget设置为ES5时,执行的命令行将类似于

tsc.exe --target ES5

请注意,只会处理标有BuildAction = TypeScriptCompile的文件。 您可以在解决方案资源管理器,属性面板中检查/更改文件的BuildAction:

Setting TypeScript file Build Action