3

プロジェクト内のすべての.tsファイルをコンパイルするために使用するMSBuildスクリプトがあります。まず、すべての.tsファイルを含むプロパティグループを作成します。

<ItemGroup>
   <AllTypeScriptFiles Include="XXXXX\Scripts\**\*.ts;" Exclude="XXXX\Scripts\**\*.d.ts;" /> 
</ItemGroup>

次に、このファイルリストを入力ファイルにダンプしてtsc.exeを実行します。

<WriteLinesToFile
    File="typescriptcompiler.input"
    Lines="@(AllTypeScriptFiles)"
    Overwrite="true"
    Encoding="Unicode"/>    

<Exec Command="&quot;$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc&quot; --target ES5 @typescriptcompiler.input"
      CustomErrorRegularExpression="\.ts\([0-9]+,[0-9]+\):(.*)"
      IgnoreExitCode="true" >
</Exec>

現在、出力には、一部のファイルが見つからないことが示されています。

Error reading file "XXXXX.ts": File not found

これは一部のファイルで発生しますが、エラーメッセージとまったく同じパスを指定してtsc.exeを実行すると、エラーは発生せず、ファイルがコンパイルされます。

代わりに、各ファイルを順番にコンパイルする場合:

<Exec Command="&quot;$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc&quot; --target ES5 &quot;%(AllTypeScriptFiles.Identity)&quot;"
      CustomErrorRegularExpression="\.ts\([0-9]+,[0-9]+\):(.*)"
      IgnoreExitCode="true" >
</Exec>

10秒ではなく5分かかることを除いて、すべてのファイルは問題なくコンパイルされます...

4

2 に答える 2

3

Typescript version 0.8.3 solves this problem! No more erros.

I am now able to compile all the files with one go:

<ItemGroup>
   <AllTypeScriptFiles Include="XXXXX\Scripts\**\*.ts;" Exclude="XXXX\Scripts\**\*.d.ts;" /> 
</ItemGroup>

<WriteLinesToFile
    File="typescriptcompiler.input"
    Lines="@(AllTypeScriptFiles)"
    Overwrite="true"
    Encoding="Unicode"/>    

<Exec Command="&quot;$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc&quot; --target ES5 @typescriptcompiler.input"
      CustomErrorRegularExpression="\.ts\([0-9]+,[0-9]+\):(.*)">
</Exec>
于 2013-03-20T15:46:08.400 に答える
2

これを行う最も簡単な方法は、最上位のファイル(app.tsなど)を選択し、コンパイラーに出力ファイルを設定することです...

  <Target Name="BeforeBuild">
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc&quot; --out final.js --target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
  </Target>

TypeScriptはすべての依存関係を調べ、すべてをfinal.jsにコンパイルします。

注---moduleフラグを使用していないため、この方法をお勧めします。commonjs私はまたはamdプログラムに対して別の答えを与えるでしょう。

Mark Rendleのアイデアに基づいて、TypeScriptワークフローを変更してこれを使用しました。

または、以下を使用してすべての.tsファイルをコンパイルできます...

  <ItemGroup>
    <TypeScriptCompile Include="$(ProjectDir)\**\*.ts" />
  </ItemGroup>
  <Target Name="BeforeBuild">
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\0.8.1.1\tsc&quot; --target ES5 @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
  </Target>
于 2013-01-18T13:40:18.870 に答える