2017-05-18 32 views
0

我有以下目标: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依赖未在64位目标构建。我猜MSBuild认为它已经由于x86目标而生成了。我不想为所有共享组件创建不同的x86/x64目标。我有应用程序(取决于Build_Shared),需要x86和x64构建,所以我需要这样的依赖。

回答

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;.."如果你需要。