Msbuild 如何在另一个目标中间启用MSBug目标?
我要找的是:Msbuild 如何在另一个目标中间启用MSBug目标?,msbuild,Msbuild,我要找的是: <Target Name="DoStuff" > <Message Text="Doing stuff..." /> //run target DoOtherThing <Message Text="Doing more stuff..." /> </Target> //运行目标涂鸦 您可以使用 <Target Name="DoStuff" > <Message Text="Doing
<Target Name="DoStuff" >
<Message Text="Doing stuff..." />
//run target DoOtherThing
<Message Text="Doing more stuff..." />
</Target>
//运行目标涂鸦
您可以使用
<Target Name="DoStuff" >
<Message Text="Doing stuff..." />
<CallTarget Targets="DoOtherThing" />
<Message Text="Doing more stuff..." />
</Target>
还有一种更为惯用的方式,尽管在这种情况下有点夸张:
<ItemGroup>
<MyTargets Include="Message1" />
<MyTargets Include="DoOtherThing" />
<MyTargets Include="Message2" />
</ItemGroup>
<Target Name="Message1" />
<Message Text="Doing stuff..." />
</Target>
<Target Name="DoOtherThing" />
<CallTarget Targets="DoOtherThing" />
</Target>
<Target Name="Message2" />
<Message Text="Doing more stuff..." />
</Target>
<Target Name="DoStuff" DependsOnTargets="@(MyTargets)">
</Target>
这两种方法是不等价的——DependsOn会在DoStuff之前调用所有的目标,而不是在中间。此外,它将无法访问DoStuff的作用域属性和项。但另一侧的CallTarget不是MSBuild-style。但DoStuff本身只是一个空存根,所以它们是等价的:这两种情况都会导致Message/DoOtherThing/Message在这种特殊情况下-是的,但这是“理论”,在实践中,问题作者可能会在这两种情况不相同的更现实的条件下运行它(此外,惯用的方法只会执行target一次,每次调用call target都会执行它)。但我同意,这是一个吹毛求疵的做法:)我当然可以看出这两种模式都有用处。