Копирование файлов можно выполнить с помощью следующего фрагмента кода, который обрабатывает антивирусные программы и подкаталоги
<ItemGroup>
<SomeAppStuff Include="$(SolutionDir)\ProjectXXX\bins\**\*.*" />
</ItemGroup>
<Copy
SourceFiles="@(SomeAppStaff)"
DestinationFolder="$(OutputPath)\%(RecursiveDir)"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="true"
Retries="3"
RetryDelayMilliseconds="300"/>
Указание $(OutputPath)\%(RecursiveDir)
попросит Копировать задание на соблюдение подпапок, поэтому будет помещать подпапки исходного каталога в подпапки целевых каталогов.
SkipUnchangedFiles
увеличит скорость сборки на компьютерах с достаточным объемом памяти, поскольку Windows оптимизирует ввод-вывод для часто используемых файлов при наличии достаточного объема оперативной памяти.
Retries
и RetryDelayMilliseconds
решает проблемы, связанные с
a) Сжатая файловая система NTFS, когда сборка происходит неудачно в редких случаях b) Антивирусное программное обеспечение с SSD-дисками.