Создание целевых хуков MSBuild - PullRequest
1 голос
/ 01 марта 2011

Может кто-нибудь указать мне ссылку на целевые хуки в MSBuild?

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

Спасибо, Zain

Ответы [ 2 ]

4 голосов
/ 01 марта 2011

Хороший список встроенных переопределяемых перехватчиков процесса сборки можно найти здесь . Для пользовательских целей единственное, о чем я могу думать, это использовать либо атрибут DependsOnTarget (как вы упомянули), либо Атрибут BeforeTargets / AfterTargets (как упомянуто @Ritch Melton). Будьте внимательны, только для BeforeTargets / AfterTargets в MSBuild 4.0

доступны только
4 голосов
/ 01 марта 2011

Если вы понимаете идею DependsOnTargets, то откройте файл Microsoft.Common.targets в каталоге .Net SDK (C: \ Windows \ Microsoft.NET \ Framework \ v3.5). Этот файл определяет процесс сборки для задачи MSBuild и проектов .Net, созданных Visual Studio. Ищите теги, названные BeforeXXXX и AfterXXXX. Ссылки на BeforeBuild и AfterBuild указаны в файле default.csproj - фрагмент:

    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
     <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
-->
</Project>

Есть и другие, такие как Очистить, Восстановить и т. Д.

Определите цель (или цели) для выполнения внутри этих элементов цели, например так (Создает каталог или список каталогов на основе значения в свойстве Directories:

    <Target Name="CreateDir">
    <MakeDir Directories="D:\Dogs.txt"/>
</Target>

Затем включите эти цели в цель BeforeXXX:

       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    <Target Name="BeforeBuild" BeforeTargets="CreateDir">
    </Target>
 </Project>
...