我们有一个 MSBuild 脚本,我们用它来编译我们项目中的所有 .ts 文件。首先,我们创建一个包含所有 .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=""$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc" --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=""$(MSBuildProgramFiles32)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc" --target ES5 "%(AllTypeScriptFiles.Identity)""
CustomErrorRegularExpression="\.ts\([0-9]+,[0-9]+\):(.*)"
IgnoreExitCode="true" >
</Exec>
所有文件都编译没有问题,除了它需要 5 分钟而不是 10 秒......