为什么在Visual Studio中构建我的TypeScript项目会忽略TypeScriptTarget参数?

时间:2013-02-25 20:13:30

标签: visual-studio-2012 typescript

我在Visual Studio中有一个现有的TypeScript项目(Express 2012 for Web)。该项目是使用TypeScript 0.8.1创建的。

某些类使用属性,因此需要--target ES5编译器参数。

我刚刚将插件更新为TypeScript 0.8.2,并按照定义的here步骤启用“save on save”。这与所描述的一样,包括编译使用属性的类。

但是,当我尝试构建项目时,我收到的错误如下: Config.ts (32,6): Property accessors are only available when targeting ES5 or greater

以下是我的.csproj文件中的相关部分:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
  <TypeScriptTarget>ES5</TypeScriptTarget>
  <TypeScriptIncludeComments>true</TypeScriptIncludeComments>
  <TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>

可以看到完整的文件here

为什么它可以用于编译单个文件,但是如果我构建或重建整个项目呢?

编辑:更新后的代码段,以显示<Import>代码也包含在内。

编辑2:添加了完整项目文件要点的链接。

1 个答案:

答案 0 :(得分:2)

您是否修改了.csproj文件以导入TypeScript .targets文件(代替构建事件操作以调用TSC)?如果你只是更新PropertyGroup,你实际上不会通过将这些设置转换为命令行标志的东西来调用编译器。

修改:您需要Import标记位于PropertyGroup之后(否则导入的文件不会“看到”您正在设置的属性值)。理想情况下,Import将在文件中的最后或接近最后 - 绝对是在所有PropertyGroup之后更改它所依赖的设置。