get topLeft() { return this._topLeft; }
set topLeft(value) { this._topLeft = value; Recalc(); }
上面的代码可以在TypeScript Play中找到,但是我收到了构建错误
从Visual Studio 2012 error "exited with code 1"
有没有人尝试过get,在TypeScript中设置并成功构建?
答案 0 :(得分:19)
您需要定位ECMAScript v5,即将-target ES5
参数传递给编译器。这需要在项目文件目标配置中设置。
我不知道VS是否有任何内置机制来编辑目标配置,所以我只能告诉你如何手动完成。只需打开.csproj
项目文件,查找TypeScript编译器命令所在的Target
节点,然后添加-target ES5
参数。
在我的配置中,它看起来像这样:
<Target Name="BeforeBuild">
<Exec Command=""$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.0.0\tsc" -target ES5 @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
<强>更新强>
从版本0.8.1.0开始,已删除硬编码版本依赖项并添加了对源映射的支持,因此Target
节点现在默认显示为:
<Target Name="BeforeBuild">
<Message Text="Compiling TypeScript files" />
<Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
</Target>
注入target
参数仍然非常简单,只需将其放在tsc
或$(TypeScriptSourceMap)
之后:
<Message Text="Executing tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
<Exec Command="tsc --target ES5 $(TypeScriptSourceMap) @(TypeScriptCompile ->'"%(fullpath)"', ' ')" />
答案 1 :(得分:9)
截至0.8.2还有另一个变化。一些常见的TypeScript构建内容已从.csproj移至外部构建文件。像这样:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />
您的.csproj仍然可以通过将它们包含在构建中的元素中来设置TypeScript构建的一些参数。其中一个元素是ES版本。模板为我创建了两个组,一个用于调试,一个用于发布:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES3</TypeScriptTarget>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES3</TypeScriptTarget>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>
获得所需效果只需将ES3更改为ES5
为了更深入地了解这最终如何作为对TypeScript编译器的调用的一部分,请查看Microsoft.TypeScript.targets文件。
祝你好运,