Как вы вызываете переопределенную цель 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