MSBuild BeforeBuild Step

时间:2014-11-06 21:08:21

标签: c++ visual-c++ msbuild msbuild-task pre-build-event

我昨天询问了AfterBuild是否正常工作,并且能够将其放在Project部分的最底部:MSBuild AfterBuild Step

我用不同的项目尝试了完全相同的事情。这是我的BeforeBuild代码:

<Target Name="BeforeBuild">
    <Message Text="###HI###" Importance="High" />
</Target>

我在项目Target Name="BeforeBuild"之前没有另一个,我把它放在Project部分的最底部。 .vcxproj正在解析/加载到Visual Studio 2010中而没有问题。我将“MSBuild project build build / log verbocity”设置为“Normal”。

还有其他一些我没想过会导致这种情况无法运行吗?

1 个答案:

答案 0 :(得分:3)

除非显式调用,否则不调用目标,是默认目标,在被调用的目标的DependsOn中声明,或声明其自己的BeforeTargets或AfterTargets,并调用其中一个目标。

因此,如果您希望在名为“InitializeBuildStatus”的目标之前调用目标,则可以这样写:

<Target Name="MyBeforeBuild" BeforeTargets="InitializeBuildStatus">
    <Message Text="###HI###" Importance="High" />
</Target>

如果“InitializeBuildStatus”目标运行,它将运行。 (您可以在Visual Studio或MSBuild运行中启用详细日志记录,以帮助确定相应的BeforeTarget目标。)

“BeforeBuild”和“AfterBuild”目标由Microsoft的某些项目类型的目标系统显式调用。这提供了有限的可扩展性。较新的(.NET 4.0)方式是BeforeTargets和AfterTargets。

请参阅Target Build Order