Wie inkrementiere ich meine Assembly Versionen automatisch mit TFS2008 ?


Letztes Jahr hatte ich dieses Thema für TFS2005 hier behandelt.
Mit TFS2008 hat sich aber in MSBuild einiges geändert, so dass man kleinere Änderungen vornehmen muss, um den Pattern auch mit TFS 2008 nativ verwenden zu können.

Hintergrund ist, dass die ColumnName class deprecated wurde, welche das von mir verwendete Field BuildNumber bereitgestellt hat:

[ObsoleteAttribute("This class has been deprecated. Please remove all references.")]
public static class ColumnName

Im TFSBuild.proj muss man den GetBuildPropertiesTask verwenden, um an die BuildNumber zu kommen.
Hier ein Snip mit den nötigen Änderungen, die das TFSBuild.proj File aus dem oben referenzierten Eintrag ergänzen:


<Target Name=”CheckSettingsForEndToEndIteration”>

<!–for 2008 use the GetBuildProperties Task to get the BuildNumber –>
    <GetBuildProperties TeamFoundationServerUrl=”$(TeamFoundationServerUrl)” BuildUri=”$(BuildUri)”>
      <Output TaskParameter=”BuildNumber” PropertyName=”BuildNumber”></Output>
    </GetBuildProperties>

<!–  extract the BuildRevision –>
    <ExtractRevisionTask BuildNumber=”$(BuildNumber)”>
      <Output TaskParameter=”BuildRevision” PropertyName=”BuildRevision” />
    </ExtractRevisionTask>

<!–  update the AssemblyInfo Props –>
    <CreateProperty Value=”$(BuildRevision)”>
      <Output TaskParameter=”Value” PropertyName=”AssemblyRevision”/>
    </CreateProperty>
    <CreateProperty Value=”$(BuildRevision)”>
      <Output TaskParameter=”Value” PropertyName=”AssemblyFileRevision”/>
    </CreateProperty>

<!–  just needed if you populate the AssemblyDescription  too like in the sample  –>
    <CreateProperty Value=”$(BuildNumber)”>
      <Output TaskParameter=”Value” PropertyName=”AssemblyDescription”/>
    </CreateProperty>

</Target>

Das wars damit funktioniert es auch mit TFS2008.

Viel Spass

Chris

 

 
Comments (4)

  1. AlexanderZeitler says:

    Danke für die beiden Artikel zu dem Thema. Allerdings habe ich damit das Problem, dass ich Builds nicht mehr per Checkin triggern kann, da der Build dann jeweils einen neuen Build anstößt weil ja die neue AssembyInfo eingecheckt wird.

    Habe ich eine Chance, die Builds an eine bestimmte Benutzergruppe zu binden, deren Checkins einen Build triggern? Dann könnte man den Team Build User aus dieser Gruppe ausklammern…

    Alex

  2. Team Foundation Server 2008 mit AssemblyVersion Task – rekursive Builds vermeiden

  3. CBinder says:

    Danke für das Feeback Alex und Lösung hast ja auch schon auf Deinem Blog :-)Das No_CI Flag.

    http://blog.alexonasp.net/archive/2008/05/01/team-foundation-server-2008-mit-assemblyversion-task—rekursive-builds.aspx

    thx

    Chris

  4. Some time ago I have written a walkthrough how to increment your Assembly Versions using Team Build,&#160;