在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属性。许多其他人没有 - 我想在不完全复制其内容的情况下覆盖它们。
答案 0 :(得分:13)
处理MSBuild脚本时,它还将处理导入的文件。结果将是整个脚本的单个内存规范表示。当遇到已经存在的目标时,先前的定义将被丢弃,因此无法调用原始目标。
Sayed Ibrahim Hashimi
我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build