2009-10-27 5 views
15

Ich möchte eine Build-Nummer erstellen, die aussieht wie Major.minor.Date.LastChangeSetInTFS, das Problem besteht darin, wie die letzte Änderungssatznummer aus dem TFS abgerufen wird. Gibt es irgendeine Eigenschaft oder etwas?TFS- und Msbuild-Versionsnummer mit dem letzten Änderungssatz

+0

Dies wurde bereits beantwortet wurde, haben einen Blick auf: http://stackoverflow.com/questions/545566/aligning-assembly-version-numbers-with-tfs-buildnumber – Burt

+0

@Burt Die verknüpfte Frage/Antwort ist über die automatisch generierte TFS-Buildnummer, die sich vollständig von der Änderungssatznummer unterscheidet. – makhdumi

Antwort

10

OK endlich habe ich eine Lösung gefunden. Im Folgenden finden Sie eine Aufgabe, mit der Sie die letzte Änderungssatznummer erhalten und eine Eigenschaft zum Einfügen in eine Assembly-Info-Build-Nummer erstellen können. Das Hauptproblem war in der fehlenden TfsLibraryLocation Eigenschaft (ohne es, soll es zu Bibliotheken in GAC werden zeigen, aber es kam nicht)

<Target Name="GetVersionChangeSet"> 
<TfsVersion 
    TfsLibraryLocation="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies"  
    LocalPath="$(SolutionRoot)"> 
    <Output TaskParameter="Changeset" PropertyName="ChangesetNumber"/> 
</TfsVersion> 
<Message Text="TFS ChangeSetNumber: $(ChangesetNumber)" /> 

+3

Für VS2010 wurde die TfsLibraryLocation in "$ (DevEnvDir) ReferenceAssemblies \ v2.0" geändert. Außerdem existiert $ (SolutionRoot) nicht natürlich, aber $ (SolutionDir). –

+1

Die Task TfsVersion funktioniert nicht mehr mit TFS 2010. Ich habe hier eine Antwort für TFS 2010 veröffentlicht: http: //stackoverflow.com/questions/11748338/tf-exe-on-tfspreview/12923581 –

2

Nach einem Kommentar auf this page können Sie die Befehlszeile tf changeset /latest /i verwenden, aber ich kann das von zu Hause aus nicht überprüfen.

+0

'tf changeset/latest/i' bekommt die richtigen Informationen, aber wie man das in eine Eigenschaft einfügt? –

0

Überprüfen Sie die folgenden Erweiterungsprojekte. Sie werden ungefähr 5 verschiedene Möglichkeiten finden, um Ihr Problem zu lösen.

  • MSBuild Extension Pack - aktiv gepflegt, bietet diese Erweiterung über 280 Aufgaben
  • MSBuild Community Tasks Project - nicht seit 2007, dieser Satz von ~ 90 Aufgaben beibehalten noch ein paar einzigartigen Aufgaben, nämlich die Flat-File-basierte Task Version
  • SDC Tasks Library - seit August 2008 nicht mehr gepflegt, wurde diese Erweiterung in MSBuild Extension Pack aufgenommen. Wenn es etwas gibt, das Sie nicht in MSBuild Extension Pack finden können, überprüfen Sie dieses, mit seinem Portfolio von mehr als 300 Aufgaben Chancen, es kann haben, was Sie brauchen.
1

Sorry, ich nicht auf der neueste Antwort kommentieren.

Die TfsVersion-Aufgabe in der von Ihnen angegebenen Form gibt Ihnen nur die letzte Änderungssatznummer in $(SolutionRoot).

Wenn Sie etwas neuere in $(SolutionRoot)\subdir haben, wird die bereitgestellte Lösung nicht funktionieren, da es Ihnen die neuesten Informationen von den $(SolutionRoot) geben wird, nicht von $(SolutionRoot)\subdir, wie Sie es gewünscht haben.

Ich benutze die tf changeset /latest /i und es funktioniert gut für mich.

+0

FYI ... das wird die neueste Änderungsmenge in TFS erhalten, unabhängig davon, welche Änderungsmenge Sie gerade in Ihrem lokalen Ordner haben. –

Verwandte Themen