我正在使用 TypeScript 0.8.3 并尝试在保存时进行编译。
我的设置有点不同,但它应该真的可以工作。请记住,当我构建项目时它工作正常,而不是保存:
显然第一件事:工具 > 选项 > 文本编辑器 > TypeScript > 项目 > 保存时编译设置为“自动编译作为项目一部分的 TypeScript 文件”
然后在我的 .csproj 文件中
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptOutFile>application.js</TypeScriptOutFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptOutFile>application.js</TypeScriptOutFile>
</PropertyGroup>
<!-- this imports the code below from Microsoft.Typescript.targets -->
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />
我改变了 Microsoft.TypeScript.targets 如下:
<Target Name="CompileTypeScript">
<Message Text="Compiling TypeScript files" />
<Message Text="Creating response file typescriptcompiler.input" />
<WriteLinesToFile
File="typescriptcompiler.input"
Lines=""C:\MyProject\MyProject.Web\Scripts\_references.ts"" <!-- recursively gets individual file paths referenced therein -->
Overwrite="true"
Encoding="Unicode"/>
<Message Text="Executing tsc $(TypeScriptBuildConfigurations) @typescriptcompiler.input" />
<Exec Command="tsc $(TypeScriptBuildConfigurations) @typescriptcompiler.input" />
<Delete Files="typescriptcompiler.input"/>
</Target>
然而我仍然需要重建项目来生成我的单曲application.js
。保存单个文件不起作用。
注意:当尝试一次编译太多文件时,我必须更改 Microsoft.Typescript.targets 以解决 tsc 使用的 WScript 库中的缓冲区错误。基本上解决方法是写入文件然后传递给编译器。
任何想法为什么它不会在保存时重新编译?
Microsoft.Typescript.targets 中有这条线,但它似乎没有做任何事情我尝试删除这两个条件,所以它总是正确的,保存时仍然没有编译。这应该做什么?:
<TypeScriptCompileOnSaveEnabled Condition="'$(TypeScriptEnableCompileOnSave)' != 'false' and '$(TypeScriptOutFile)' == ''">true</TypeScriptCompileOnSaveEnabled>