В решении MSBild вы можете использовать как минимум три подхода.
- Выполнить команду копирования (просто для понимания и поддержки, может влиять
повысить производительность в случае большого количества вызовов);
- Использовать задачи MSL-сборки ReadLinesFromFile / WriteLinesToFile (достаточно просто, но полученный файл потеряет форматирование)
- Использовать .NET File.ReadAllText / WriteLinesToFile (хороший результат, но в некоторых случаях может быть сложным)
Выполнение команды копирования
Чтобы объединиться с командой копирования, вы должны добавить что-то вроде этого в вашу цель:
<Exec Command="COPY /b file1.min.js + file2.min.js files-merged.min.js" />
В большинстве случаев этого должно быть достаточно.
Использование задач MSbuild ReadLinesFromFile / WriteLinesToFile
<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.