在 MSBild 解决方案中,您至少可以使用三种方法。
- 执行复制命令(简单理解和支持,如果调用过多,可能会影响构建性能);
- 使用 ReadLinesFromFile/WriteLinesToFile msbuild 任务(很简单,但生成的文件会丢失格式)
- 使用 .NET File.ReadAllText/WriteLinesToFile(效果不错,但在某些情况下可能会很复杂)
执行复制命令
要与复制命令合并,您应该在目标中添加类似这样的内容:
<Exec Command="COPY /b file1.min.js + file2.min.js files-merged.min.js" />
在大多数情况下,它应该足够了。
使用 ReadLinesFromFile/WriteLinesToFile msbuild 任务
<ItemGroup>
<SourceFiles Include="file1.min.js;file2.min.js" />
</ItemGroup>
<ReadLinesFromFile File="%(SourceFiles.Identity)">
<Output TaskParameter="Lines" ItemName="FileLines" />
</ReadLinesFromFile>
<WriteLinesToFile File="files-merged.min.js" Lines="@(FileLines)" Overwrite="true" />
此示例说明如何使用本机 msbuild 工具来合并这两个文件。不幸的是,在这种情况下,我们丢失了文件格式。
使用 .NET File.ReadAllText() 和 msbuild WriteLinesToFile
<ItemGroup>
<SourceFiles Include="arrays.cmd;cp.cmd" />
<FileLines Include="$([System.IO.File]::ReadAllText(%(SourceFiles.Identity)))" />
</ItemGroup>
<WriteLinesToFile File="test.out" Lines="@(FileLines)" Overwrite="true" />
这种方法快速准确,但使用了某种 .NET 注入。