MSBuild生成前步骤

Jon*_*Mee 3 c++ msbuild msbuild-task visual-c++ pre-build-event

昨天我问到有关AfterBuild工作的信息,并且能够通过将其放置在本Project节的最底部来进行工作:MSBuild AfterBuild步骤

我在另一个项目中尝试了完全相同的事情。这是我的BeforeBuild代码:

<Target Name="BeforeBuild">
    <Message Text="###HI###" Importance="High" />
</Target>
Run Code Online (Sandbox Code Playgroud)

Target Name="BeforeBuild"在该项目中没有其他人,并且将其放在本Project节的最底部。.vcxproj可以毫无问题地解析/加载到Visual Studio 2010中。我将“ MSBuild项目的生成输出/日志详细程度”设置为“正常”。

还有其他我没想到的事情会导致此问题无法执行吗?

Tom*_*get 5

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

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

<Target Name="MyBeforeBuild" BeforeTargets="InitializeBuildStatus">
    <Message Text="###HI###" Importance="High" />
</Target>
Run Code Online (Sandbox Code Playgroud)

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

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

请参阅目标构建顺序