Можно ли препятствовать тому, чтобы MSBuild.exe выполнил События Сборки?

У Sara Ford есть много подсказок как они о Visual Studio

, Вот тот что ссылки что aaronjensen, сказанный о Файле. CloseAllButThis:

http://blogs.msdn.com/saraford/archive/2008/01/08/did-you-know-you-can-close-all-but-this-on-files-in-the-file-tab-channel.aspx

52
задан Whitewall 1 May 2012 в 17:05
поделиться

3 ответа

Pre / PostBuildEvents - это свойства, поэтому для их переопределения просто установите их из в командной строке пустую строку.

msbuild foo.sln /p:PreBuildEvent= /p:PostBuildEvent=
90
ответ дан 7 November 2019 в 09:08
поделиться

По умолчанию, когда вы импортируете Microsoft.Common.targets, вы получаете

<PropertyGroup>
    <BuildDependsOn>
        BeforeBuild;
        CoreBuild;
        AfterBuild
    </BuildDependsOn>
</PropertyGroup>

Я думаю, вы можете просто заменить его на

<PropertyGroup>
    <BuildDependsOn>
        CoreBuild
    </BuildDependsOn>
</PropertyGroup>

, чтобы отключить эти события до / после сборки. (Не уверен, нужно ли вам поместить это в файл .proj до или после импорта, или вам нужно изменить Microsoft.Common.targets, чтобы получить такой эффект. У меня нет времени экспериментировать прямо сейчас ...)

0
ответ дан 7 November 2019 в 09:08
поделиться

Я бы создал новый файл .proj, скажем, C: \ Data \ SupressBuildEvents.proj и он будет содержать:

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

    <Target Name="PreBuildEvent" />
</Project>

Затем вам нужно указать, что эти файлы будут импортированы после Microsoft.Common.targets, и вы сделаете это, определив хорошо известное свойство CustomAfterMicrosoftCommonTargets для пути к этому файлу. Итак, пусть ваш сценарий сборки находится в файле с именем MyBuild.proj, вы должны вызвать его как:

msbuild MyBuild.proj /p:CustomAfterMicrosoftCommonTargets="C:\Data\SupressBuildEvents.proj
"

Это заставит MSBuild импортировать ваш файл после того, как файл Microsoft.Common.targets будет импортирован, и он переопределит цели PostBuildEvent и PreBuildEvent и заставлять их ничего не делать.

Теперь, если ваши файлы MyBuild.proj используют задачу MSBuild для создания других целей, вы также должны передать им это свойство следующим образом:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <ProjectsToBuild Include=" FILL THIS IN "/>
    </ItemGroup>

    <Target Name="YourTarget">
        <MSBuild Projects="@(ProjectsToBuild)"
                 Properties="CustomAfterMicrosoftCommonTargets=$(CustomAfterMicrosoftCommonTargets)"/>
    </Target>

</Project>

Это необходимо, потому что по свойствам конструкции в родительском скрипте не передаются в сборки, выполняемые задачей MSBuild.

10
ответ дан 7 November 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: