3

我昨天询问了如何AfterBuild开始工作,并且能够通过将其放在该Project部分的最底部来使其工作:MSBuild AfterBuild Step

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

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

我之前在项目中没有另一个Target Name="BeforeBuild",我把它放在了该部分的最底部Project。.vcxproj 正在解析/加载到 Visual Studio 2010 中,没有问题。我将“MSBuild 项目构建输出/日志详细程度”设置为“正常”。

还有什么我没有想到会导致它无法运行的东西吗?

4

1 回答 1

6

除非显式调用,否则不会调用目标,它是默认目标,在被调用的目标的 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。

请参阅目标构建顺序

于 2014-11-07T06:00:59.073 回答