我们正在尝试编写一个 msbuild 脚本,该脚本将构建解决方案并将所有已编译的二进制文件和依赖项复制到特定的输出文件夹。虽然我们拥有的构建脚本确实构建并复制二进制文件到一个公共文件夹,但我们没有复制依赖项。这可能与我们使用 msbuild 任务构建解决方案的方式有关,我们将任务的目标输出接受到项目组中并迭代项目组以将所有已编译的 dll 和 exe 复制到一个公共文件夹中。但这不包括放置在每个项目的单独 bin 文件夹中的依赖 dll。
<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>
将所有二进制文件以及必要的依赖项复制到公共输出文件夹的首选方法是什么?