我正在尝试在构建期间连接几个文件,但我尝试的方式剥离了标签和空格,使输出无格式化。
<CreateItem Include="Scripts\ApplicationModule.d.ts; Scripts\AccountModule.d.ts; Scripts\FeedModule.d.ts;">
<Output TaskParameter="Include" ItemName="ApplicationDefinitionFiles" />
</CreateItem>
<ReadLinesFromFile File="%(ApplicationDefinitionFiles.FullPath)">
<Output TaskParameter="Lines" ItemName="ApplicationDefinitionLines" />
</ReadLinesFromFile>
<WriteLinesToFile File="Scripts\ApplicationDefinition.d.ts" Lines="@(ApplicationDefinitionLines)" Overwrite="true" />
保留格式的方法是什么?
答案 0 :(得分:11)
这是我在遇到同样问题时最终得到的结果:
<Target Name="ConcatenateScripts">
<!-- List all the files you want to concatenate. -->
<ItemGroup>
<ConcatFiles Include="
Scripts\ApplicationModule.d.ts;
Scripts\AccountModule.d.ts;
Scripts\FeedModule.d.ts;"/>
</ItemGroup>
<!-- Read the contents of the files (preserving tabs/spaces). -->
<ItemGroup>
<FileContents Include="$([System.IO.File]::ReadAllText(%(ConcatFiles.Identity)))"/>
</ItemGroup>
<!-- Write the result to a single file. -->
<WriteLinesToFile File="Scripts\ApplicationDefinition.d.ts" Lines="@(FileContents)" Overwrite="true" />
</Target>
<!-- Concatenate scripts on AfterBuild. -->
<Target Name="AfterBuild">
<CallTarget Targets="ConcatenateScripts"/>
</Target>
这是this blog post的修改版,但使用$([System.IO.File]::ReadAllText(...)
代替ReadLinesFromFile
任务,如this answer中所述。