创建 MSBuild 目标挂钩

Zai*_*zvi 2 msbuild hook target

有人可以指点我关于 MSBuild 中目标钩子的参考吗?

我正在寻找可以让我定义在指定目标之前和之后运行的目标的东西。我知道这可以使用 DependsOnTargets 属性来完成,但我已经看到使用目标挂钩的参考,我想探索该领域。

谢谢,赞恩

Rit*_*ton 5

如果您了解 DependsOnTargets 背后的想法,请打开 .Net SDK 目录 (C:\Windows\Microsoft.NET\Framework\v3.5) 中的 Microsoft.Common.targets 文件。该文件定义 MSBuild 任务和 Visual Studio 创建的 .Net 项目的生成过程。查找名为 BeforeXXXX 和 AfterXXXX 的标签。BeforeBuild 和 AfterBuild 在 default.csproj 文件中引用 - 代码片段:

    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
     <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
-->
</Project>
Run Code Online (Sandbox Code Playgroud)

还有其他的,例如清理、重建等。

定义一个目标(或多个目标)以在这些目标元素内执行,如下所示(根据目录属性中的值创建目录或目录列表:

    <Target Name="CreateDir">
    <MakeDir Directories="D:\Dogs.txt"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

然后将这些目标包含在 BeforeXXX 目标中:

       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    <Target Name="BeforeBuild" BeforeTargets="CreateDir">
    </Target>
 </Project>
Run Code Online (Sandbox Code Playgroud)


por*_*san 5

可以在此处找到内置可覆盖构建过程挂钩的良好列表对于自定义目标,我唯一能想到的就是使用 DependsOnTarget 属性(如您提到的)或 BeforeTargets/AfterTargets 属性(如提到的 @Ritch Melton。)小心,BeforeTargets/AfterTargets 仅在 MSBuild 4.0 中可用