今天我遇到了类似的问题,它让我想起了这个话题。在Visual Studio中,如果我们打开.csproj文件,我们会看到它们告诉我们取消注释两个目标AfterBuild和BeforeBuild,以便在构建当前项目之前和之后执行它们。
我的问题是:在Visual Studio中调用这两个目标的位置是什么?如果没有定义目标(被注释掉),它是如何处理的?
答案 0 :(得分:9)
这些目标包含在名为Microsoft.Common.targets
的文件中。此文件通过另一个导入Microsoft.CSharp.targets
(或其他类似的语言)导入到您的脚本中。所以它们总是在构建开始时定义。在项目文件中,您可以通过在前面提到的文件的<Import
语句之后重新声明它们来覆盖这些目标。如果您在<Import
之前声明它们,那么您的目标将被忽略,因为Microsoft.Common.targets
中的空目标将被使用。
有关扩展构建过程的详细信息,请参阅我的文章Inside MSBuild或更好的我的书Inside the Microsoft Build Engine!
在回应之前的评论者时,这些目标是构建项目的构建过程的一部分。它们在MSBuild文件中捕获,既不是MSBuild也不是Visual Studio的一部分。