Остановка событий Post Build для проекта при сборке непосредственно из MSBuild - PullRequest
1 голос
/ 25 ноября 2011

У меня есть проект, в котором есть события после сборки, которые копируют другие проекты.К сожалению, я не могу этого изменить, и меня попросили написать скрипт сборки для использования на CI-сервере.

Проблема в том, что шаги после сборки запускаются из папок bin отладки / выпуска, и я компилирую через скрипт сборкив другую папку.Таким образом, одним из решений было бы оставить проект как есть, а затем вручную скопировать все файлы из папок bin в выходную папку, которую я использую.Однако это похоже на хак, поэтому мне было интересно, есть ли способ для задачи MSBuild сообщить решению, которое она строит, игнорировать события PostBuild, я полагаю, вы могли бы установить свойство PostBuildEvent = '', но это не показалосьчтобы остановить их ...

Вот пример цели сценария сборки:

<Target Name="Compile" DependsOnTargets="Clean;">
    <MSBuild Projects="$(SourceDirectory)\SomeSolution.sln" 
            Properties="Configuration=Release; OutputPath=$(CompilationDirectory); PostBuildEvent=''" />
</Target>

Кто-нибудь должен был делать что-то подобное раньше?

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Чтобы отключить все PostBuildEvents, задайте для CustomAfterMicrosoftCommonTargets значение C: \ PostBuild.config (или любое другое имя файла), а PostBuild.config должно быть:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="PostBuildEvent"/>
</Project>

Добавить / p: CustomAfterMicrosoftCommonTargets = "C: \ PostBuild.config "в командной строке msbuild

Или обновите свойства задачи MsBuild:

<MsBuild Projects="$(ProjectTobuild)" Properties="Configuration=$(Configuration);Platform=$(Platform);CustomAfterMicrosoftCommonTargets='C:\PostBuild.config'" Targets="Build"/>
0 голосов
/ 01 августа 2017

Чтобы отключить PostBuildEvents на уровне проекта для MSBuild, просто поместите эти коды внутри .csproj:

 <Target Name="BeforeBuild">
  <PropertyGroup>
    <PostBuildEvent></PostBuildEvent Condition="'$(BuildingInsideVisualStudio)' == 'false' Or '$(BuildingInsideVisualStudio)' != 'true'">
  </PropertyGroup>
 </Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...