VS 2010: Нужен проект, который будет действовать как триггер для скрипта MSBUILD и не будет компилироваться в сборку - PullRequest
8 голосов
/ 08 декабря 2011

У меня есть решение с несколькими проектами веб-приложений. После того, как все проекты собраны, мне нужно запустить скрипт MSBUILD.

Я использовал вызов сценария одного из существующих проектов (через <Target Name="AfterBuild"> в файле .csproj). Однако я должен был убедиться, что использовал последний построенный проект, и если порядок сборки когда-либо изменится, я получу неожиданные результаты.

Итак, я решил создать пустой проект веб-приложения и установить зависимости проекта так, чтобы он всегда создавался последним, а затем присоединить к нему скрипт MSBUILD.

Так что теперь он всегда выполняется в нужное время, но я получаю дополнительную (крошечную) сборку в результате создания предположительно пустого проекта. В проекте нет файлов кода (кроме AssemblyInfo.cs), но всегда создается сборка.

Итак, есть ли способ остановить сборку сборки или способ присоединить скрипт MSBUILD к решению в целом и избежать всего этого фиктивного проекта?

Ответы [ 2 ]

9 голосов
/ 08 декабря 2011

В MSBuild 4.0 есть два новых хука, которые можно использовать для запуска сценариев до и после построения решения .При запуске MSBuild для файла решения он ищет два целевых файла в каталоге решения:

  • до . SolutionName .sln.targets
  • после . SolutionName .sln.targets

Если какой-либо из этих файлов будет найден, он будет автоматически выполнен на соответствующем этапе.

В вашем случае, чтобы запустить скрипт после того, как все проекты в решении построены, вы можете создать файл after.MySolution.sln.targets с Target , например:

<Target Name="RunPostBuildScripts" AfterTargets="Build">
    <MSBuild Projects="PostBuild.targets" />
</Target>

См. Также:

3 голосов
/ 07 марта 2012

У меня недостаточно очков репутации, чтобы комментировать принятый ответ Enrico, поэтому я просто прокомментирую здесь, что это не сработает, когда вы запустите сборку в самой Visual Studio 2010. Он работает, когда MSBuild запускается из командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...