Я спросил вчера о получении AfterBuild
работать и смог получить это работает, поместив его в самом низу Project
раздел: MSBuild AfterBuild Step
Я попробовал то же самое с другим проектом. Это мое BeforeBuild
код:
<Target Name="BeforeBuild">
<Message Text="###HI###" Importance="High" />
</Target>
У меня нет другого раньше Target Name="BeforeBuild"
в проекте, и я разместил это в самом низу Project
раздел. .Vcxproj анализирует / загружает в Visual Studio 2010 без проблем. У меня есть «MSBuild Project build output / log verbocity», установленный на «Normal».
Есть ли что-то еще, о чем я не подумал, что это могло бы не работать?
Цель не вызывается, если она не вызывается явно, она является целью по умолчанию, объявляется в DependsOn для цели, которая вызывается, или объявляет свои собственные BeforeTargets или AfterTargets, и вызывается одна из этих целей.
Итак, если вы хотите, чтобы цель вызывалась до цели с именем InitializeBuildStatus, вы можете написать ее так:
<Target Name="MyBeforeBuild" BeforeTargets="InitializeBuildStatus">
<Message Text="###HI###" Importance="High" />
</Target>
Он запустится, если запустится цель «InitializeBuildStatus». (Вы можете включить подробное ведение журнала в Visual Studio или для запуска MSBuild, чтобы помочь определить подходящие цели BeforeTarget.)
Цели «BeforeBuild» и «AfterBuild» явно вызываются целевой системой некоторых типов проектов Microsoft. Это предлагает только ограниченную расширяемость. Более новый (.NET 4.0) способ — BeforeTargets и AfterTargets.
Увидеть Целевой порядок сборки.