У Sara Ford есть много подсказок как они о Visual Studio
, Вот тот что ссылки что aaronjensen, сказанный о Файле. CloseAllButThis:
Pre / PostBuildEvents - это свойства, поэтому для их переопределения просто установите их из в командной строке пустую строку.
msbuild foo.sln /p:PreBuildEvent= /p:PostBuildEvent=
По умолчанию, когда вы импортируете Microsoft.Common.targets, вы получаете
<PropertyGroup>
<BuildDependsOn>
BeforeBuild;
CoreBuild;
AfterBuild
</BuildDependsOn>
</PropertyGroup>
Я думаю, вы можете просто заменить его на
<PropertyGroup>
<BuildDependsOn>
CoreBuild
</BuildDependsOn>
</PropertyGroup>
, чтобы отключить эти события до / после сборки. (Не уверен, нужно ли вам поместить это в файл .proj до или после импорта, или вам нужно изменить Microsoft.Common.targets, чтобы получить такой эффект. У меня нет времени экспериментировать прямо сейчас ...)
Я бы создал новый файл .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.