Как вы вызываете переопределенную цель MSBuild?

В MSBuild вы можете переопределить <Target /> из другого файла самостоятельно. Например, цель AfterBuild включена в файл Microsoft.Common.targets просто путем определения вашей собственной цели с тем же именем:

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

Вы увидите следующее примечание:

Переопределение целевой "AfterBuild" в проекте "C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets" с целевым "AfterBuild" из проекта "XXXXX".

Можно ли вызвать исходную цель AfterBuild?

Я хотел бы сделать это, чтобы измерить определенные сложные целевые значения по умолчанию, а затем выполнить оригинальное поведение. Многие объекты, такие как Build, выставляют свойство BuildDependsOn, которое можно использовать для этого. Многие другие этого не делают - и я бы хотел переопределить их, не полностью дублируя их содержимое.

Ответ 1

Когда обрабатывается MSBuild script, он также обрабатывает импортированные файлы. Результатом будет одиночное в памяти каноническое представление всего script. Когда встречается цель, которая уже существует, предыдущее определение отбрасывается, поэтому невозможно вызвать исходную цель.

Сказал Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: использование MSBuild и Team Foundation Build