Что бы я сделал, это определил новый файл .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.