Мы пытаемся написать сценарий msbuild, который построит решение и скопирует все скомпилированные двоичные файлы и зависимости в определенную папку вывода. Хотя сценарий сборки, который у нас есть, создает и копирует двоичные файлы в общую папку, мы не получаем копирование зависимостей. Вероятно, это связано с тем, как мы использовали задачу msbuild для создания решения, и мы принимаем целевые выходные данные задачи в группу элементов и выполняем итерацию по группе элементов, чтобы скопировать все скомпилированные библиотеки DLL и exes в общую папку. Но это не включает библиотеки зависимостей, которые помещаются в отдельную папку bin каждого проекта.
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ParentSolutionFile />
</PropertyGroup>
<ItemGroup>
<Assemblies Include="*.dll, *.exe" />
</ItemGroup>
<Target Name="BuildAll">
<CombinePath BasePath="$(MSBuildProjectDirectory)" Paths="Source\Solutions\xxx.sln">
<Output TaskParameter="CombinedPaths" PropertyName="ParentSolutionFile" />
</CombinePath>
<Message Text="$(ParentSolutionFile)" />
<MSBuild Projects="$(ParentSolutionFile)">
<Output TaskParameter="TargetOutputs" ItemName="Assemblies" />
</MSBuild>
<Message Text="%(Assemblies.Identity)" />
<Copy SourceFiles="%(Assemblies.Identity)" DestinationFolder="$(MSBuildProjectDirectory)\Binary" OverwriteReadOnlyFiles="True" SkipUnchangedFiles="True" />
</Target>
What will be the preferred way to copy over all the binaries along with the necessary dependencies to a common output folder?