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
ます。単一のファイルの保存は機能しません。
注:一度に多くのファイルをコンパイルしようとしたときにtscが使用するWScriptライブラリのバッファーのバグを回避するには、Microsoft.Typescript.targetsを変更する必要がありました。基本的に、回避策はファイルに書き込んでからコンパイラに渡すことです。
保存時に再コンパイルされない理由はありますか?
Microsoft.Typescript.targetsにこの行がありますが、両方の条件を削除しようとしても何も実行されないようです。そのため、常にtrueであり、保存時にコンパイルは行われません。これは何をすることになっていますか?:
<TypeScriptCompileOnSaveEnabled Condition="'$(TypeScriptEnableCompileOnSave)' != 'false' and '$(TypeScriptOutFile)' == ''">true</TypeScriptCompileOnSaveEnabled>