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

时间:2010-04-09 03:37:07

标签: visual-studio msbuild

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

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

1 个答案:

答案 0 :(得分:9)

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

有关扩展构建过程的详细信息,请参阅我的文章Inside MSBuild或更好的我的书Inside the Microsoft Build Engine

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