Laden...

MSBuild AssemblyVersion AssemblyFileVersion automatisch inkrementieren

Erstellt von Wax vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.838 Views
Wax Themenstarter:in
731 Beiträge seit 2006
vor 8 Jahren
MSBuild AssemblyVersion AssemblyFileVersion automatisch inkrementieren

Hallo zusammen,

zur Zeit wird ein Softwareprojekt von mir mittels eigenem MSBuild-Skript erstellt.

Die VS-Solution enthält mehrere Projekte und alle Projekte verweisen auf eine gemeinsame AssemblyInfo.cs.

Das ganze funktioniert wie hier beschrieben: Shared Assembly Info

Somit habe ich den Änderungsaufwand beim inkrementieren einer Version schon mal auf ein Minimum reduziert.

Allerdings möchte ich auch diese Anpassung nun automatisieren.
Als Versionskontrollsystem setze ich TFS ein.

Ich habe im Netz bereits Möglichkeiten gesehen wie man es per T4-Template machen könnte.
Inklusive auschecken der AssemblyInfo.cs Datei vorher, ändern des Inhaltes und anschließendes wieder einchecken.

Das ganze schien "etwas hacky" zu sein.

Deswegen meine Frage, hat jemand Erfahrung mit diesem Szenario und was könnt ihr empfehlen bzw. wie macht ihr das?

Gruß,
wax

F
10.010 Beiträge seit 2004
vor 8 Jahren

Wir kümmern uns nur um die Mayor und Minor Versionen, nicht um das dahinter, das lassen wir automatisch machen.
Setz die Versionen in der AssemblyInfo.cs auf z.b. "1.1.*" und der Compiler fügt automatisch die angaben basierend auf der Compiler Zeit ein, hier also "1.1.5822.20502" für jetzt.

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo Wax,

ich pflege die händisch -- ebenso mit der verlinkten Variante.
Grund: Nicht bei jedem Compilieren ändert sich der "Stand" und somit die Version. Bei der Version folge ich http://semver.org/ -- leider ist in .net die Version etwas anders aufgebaut, aber das lässt sich dennoch gut nachbilden.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

S
93 Beiträge seit 2008
vor 8 Jahren

Ich habe mir ein kleines Programm geschrieben, das die Version in der AssemblyInfo.cs nach jedem Build als Release-Version hochsetzt.
Funktioniert für meine Zwecke hervorragend

16.840 Beiträge seit 2008
vor 8 Jahren

Das ist bei .NET noch ein wenig umständlich; ändert sich aber mit der Umstellung auf project.json

Ich habe das mit einem T4 Script gelöst, sodass ich NuGet und Assembly gleichzeitig pflegen kann.
Zufrieden bin ich damit auch nicht - den goldenen Weg (außer project.json) hab ich auch noch nicht gefunden.

Ich ziehe deshalb bereits die ersten Projekte auf das neue Projektformat (auch wenn das VS-Template noch im Preview-Status ist) um.

Wax Themenstarter:in
731 Beiträge seit 2006
vor 8 Jahren

Danke für eure Antworten!

Ich habe mich für eine Kombination aus T4-Templates und verlinkten Dateien entschieden.

Ich lasse die T4-Skripte in einem Pre-Build-Event laufen.

Mir ist allerdings aufgefallen, dass dieses Pre-Build-Event auch dann getriggert wird, wenn das beinhaltende Projekt laut Solution-Konfiguration gar nicht erzeugt werden soll.

Ich möchte nämlich, dass dieses Pre-Build-Event nur im Release-Build läuft.

Mache ich was falsch oder werden Build-Events auch dann ausgelöst, wenn das dazugehörige Projekt gar nicht "gebuildet" wird?

Gruß,
wax

edit: Hat sich wohl erledigt. Das Event wird anscheinend doch nicht gefeuert. Keine Ahnung was ich da gesehen hatte.