msbuildbuildpost-build-event

Stopping Post Build events on project when building directly from MSBuild


I have a project which has some post build events that do some copying around for other projects. I unfortunately cannot change that, and have been asked to write a build script for use on a CI server.

Problem is that the post build steps run off the debug/release bin folders and I compile through the build script to a different folder. So one solution would be to let the project build as is, and then manually copy all files from the bin folders to the output folder I am using. However that feels like a bit of a hack, so I was wondering if there is a way for an MSBuild task to tell the solution it is building to ignore PostBuild events, I believe you could set a property PostBuildEvent='' but it didnt seem to stop them from happening...

Here is an example of the build script target:

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

Anyone had to do anything similar before?


Solution

  • To disable all PostBuildEvents, set the CustomAfterMicrosoftCommonTargets to C:\PostBuild.config (or whatever you name the file) and have PostBuild.config to be:

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

    Add /p:CustomAfterMicrosoftCommonTargets="C:\PostBuild.config" to your msbuild command line

    Or update your MsBuild task properties:

    <MsBuild Projects="$(ProjectTobuild)" Properties="Configuration=$(Configuration);Platform=$(Platform);CustomAfterMicrosoftCommonTargets='C:\PostBuild.config'" Targets="Build"/>