不构建MSBuild依赖项

时间:2017-05-18 08:01:30

标签: c++ msbuild

我有以下目标:

<Target Name="Build" DependsOnTargets="Build_Shared" />
<Target Name="Build_Shared" DependsOnTargets="Build_Shared_x86;Build_Shared_x64"/>
<Target Name="Build_Shared_x86" DependsOnTargets="SetPlatform_x86;Shared_1;..." />
<Target Name="Build_Shared_x64" DependsOnTargets="SetPlatform_x64;Shared_1;..." />

问题是Shared_1依赖项不是在x64目标中构建的。我想MSBuild认为它已经由于x86目标而构建。我不想为所有共享组件创建不同的x86 / x64目标。我有需要x86和x64构建的应用程序(取决于Build_Shared)所以我需要这样的依赖。

1 个答案:

答案 0 :(得分:1)

请注意,每个目标只在构建期间执行一次。如果您有多个目标,具体取决于Shared_1目标,Shared_1只会运行一次,并且在遇到第二个DependsOnTargets="..;Shared_1;.."时会被认为已经运行。

如果需要多次运行同一目标,则需要使用嵌套的msbuild命令:

<Target Name="Build_Shared">
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="Shard_1" Properties="Platform=x86" />
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="Shard_1" Properties="Platform=x64" />
</Target>

如果您需要,也可以使用Targets="SetPlatform_x86;Shared_1;.."