Visual Studio何时调用目标AfterBuild和BeforeBuild?如果没有定义这些目标,它是如何处理的?

Nam*_* VU 4 msbuild visual-studio

今天我遇到了类似的问题,它让我想起了这个主题.在Visual Studio中,如果我们打开.csproj文件,我们会看到它们告诉我们取消注释两个目标AfterBuild和BeforeBuild,以便在构建当前项目之前和之后执行它们.

我的问题是:在Visual Studio中调用这两个目标的位置是什么?如果没有定义目标(被注释掉),它是如何处理的?

Say*_*imi 9

这些目标包含在一个名为的文件中Microsoft.Common.targets.此文件通过另一个导入Microsoft.CSharp.targets(或其他类似的语言)导入到您的脚本中.所以它们总是在构建开始时定义.在项目文件中,您可以通过<Import在前面提到的文件的语句之后重新声明它们来覆盖这些目标.如果您在之前声明它们,<Import那么您的目标将被忽略,因为Microsoft.Common.targets将使用空目标.

有关扩展构建过程的更多信息,请参阅我的文章Inside MSBuild或更好的我的书内部Microsoft Build Engine!

为了回应之前的评论者,这些目标是构建项目的构建过程的一部分.它们在MSBuild文件中捕获,既不是MSBuild也不是Visual Studio的一部分.