Stopping the build after first (compilation) error in team build

 

Scenario -

We are building multiple solutions in our Team Build project file. We want to halt the build when the first compile error is encountered.

 

Answer

 

If you are building multiple solutions (sln's) and you encounter error in any sln, the build process will not stop after that sln and will continue to build the rest of solutions. The reason is that MSBuild task in core compile will be invoked for each solution specified in the item group due (@(SolutionToBuild))

To stop the build after getting the build break and not continue building rest of solutions, you need to make the following changes –

  • Modify the file Microsoft.TeamFoundation.Build.targets file to add the additional option of "StopOnFirstFailure" (specified by yellow text)

ADD -

<!-- If user has not specified the option anything default behavior should be to build all slns -->
<PropertyGroup>

<StopOnFirstFailure>false</StopOnFirstFailure>

</PropertyGroup>

<!-- In target CORECLEAN -->

<MSBuild

Projects="@(SolutionToBuild)"

StopOnFirstFailure="$(StopOnFirstFailure)"

Properties="Configuration=$(FlavorToBuild); ..."

Targets="Clean" />

<!-- In target CORECOMPILE -->

<MSBuild

Condition=" '@(SolutionToBuild)'!='' "

Projects="@(SolutionToBuild)"

StopOnFirstFailure="$(StopOnFirstFailure)"

Properties="Configuration=$(FlavorToBuild);..."

Targets="Build" />

  • Now if you want to stop the build in first failure, edit your build type (tfsbuild.proj) and override/redefine the property "StopOnFirstFailure" (specified by yellow text).

<PropertyGroup>

     <StopOnFirstFailure>true</StopOnFirstFailure>

</PropertyGroup>

 

If you are building a solution with multiple projects (.xxproj's) and you encounter an error in first .csproj, then build will not stop immediately but will iterate over all the remaining projects (csproj).

Comments

  • Anonymous
    May 07, 2006
    hi this venkat raju

  • Anonymous
    May 08, 2006
    Etienne Tremblay is going to speak about Team System at DevTeach. He is also doing a webcast on adopting...

  • Anonymous
    August 24, 2006
    The comment has been removed

  • Anonymous
    November 27, 2006
    "If you are building a solution with multiple projects (.xxproj's) and you encounter an error in first .csproj, then build will not stop immediately but will iterate over all the remaining projects (csproj). " How can I make it to stop after the first compilation error? p.s I am working with Visual Studio .NET 2003 Thanks in advance, Roi

  • Anonymous
    September 11, 2007
    The comment has been removed

  • Anonymous
    January 20, 2009
    PingBack from http://www.hilpers.com/271349-msbuild