Msbuild 两次调用subtarget会导致跳过此目标。如何预防?
我使用MSBuild运行一些管理脚本,因此这里不涉及编译器或链接器,我注意到生成系统跳过了在目标中成功运行的目标 如何强制每次运行一个目标 样本:Msbuild 两次调用subtarget会导致跳过此目标。如何预防?,msbuild,Msbuild,我使用MSBuild运行一些管理脚本,因此这里不涉及编译器或链接器,我注意到生成系统跳过了在目标中成功运行的目标 如何强制每次运行一个目标 样本: <Project ToolsVersion="4.0" DefaultTargets="Foo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Foo" > <CallTarget Targe
<Project ToolsVersion="4.0" DefaultTargets="Foo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Foo" >
<CallTarget Targets="Bar" />
<CallTarget Targets="Bar" />
</Target>
<Target Name="Bar" >
<Message Text="Bar" />
</Target>
</Project>
导致
Bar:
Bar
所以它没有被调用两次,/v:d说第二次调用被跳过了,但不清楚如何在不创建目标Bar1和Bar2的情况下避免这种情况
有没有办法在Foo中执行两次目标条
围绕cl.exe、xcopy等进行搜索,未检测到任何更改,但这是仅MSBuild标记集在生成中仅调用一次,除非发生更改,因此如果希望多次调用同一目标,则必须通过更改属性来欺骗MSBuild。可以这样做:
<Target Name="Foo" >
<MSBuild Projects="$(MsBuildThisFile)" Targets="Bar" Properties="Dummy=1" />
<MSBuild Projects="$(MsBuildThisFile)" Targets="Bar" Properties="Dummy=2" />
</Target>
<Target Name="Bar" >
<Message Text="Bar" />
</Target>
然而,正如“技巧”所表明的:几乎总是有一种更为“MsBuild”的方法来完成这项工作,通常是对项目组进行批处理,因此,如果您使问题更具体,可能还会有更好的答案。好吧,我想这是一个重复:
<Target Name="Foo" >
<MSBuild Projects="$(MsBuildThisFile)" Targets="Bar" Properties="Dummy=1" />
<MSBuild Projects="$(MsBuildThisFile)" Targets="Bar" Properties="Dummy=2" />
</Target>
<Target Name="Bar" >
<Message Text="Bar" />
</Target>