你如何调用被覆盖的MSBuild目标

时间:2009-05-11 23:53:27

标签: .net msbuild

在MSBuild中,您可以覆盖自己的另一个文件中的<Target />。例如,Microsoft.Common.targets文件中包含的 AfterBuild 目标只需定义您自己的同名Target:

<Target Name="AfterBuild">
    <!-- Do something different -->
</TargetName>

你会看到这样一个音符:

使用项目“XXXXX”中的目标“AfterBuild”覆盖项目“C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets”中的目标“AfterBuild”。

有没有办法调用原来的AfterBuild目标?

我想这样做来检测某些复杂的默认目标,然后执行原始行为。像Build这样的许多目标暴露了可用于此的BuildDependsOn属性。许多其他人没有 - 我想在不完全复制其内容的情况下覆盖它们。

1 个答案:

答案 0 :(得分:13)

处理MSBuild脚本时,它还将处理导入的文件。结果将是整个脚本的单个内存规范表示。当遇到已经存在的目标时,先前的定义将被丢弃,因此无法调用原始目标。

Sayed Ibrahim Hashimi

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build