Wenn Sie eine AssemblyInfo Klasse zu Ihrem Projekt und ändern Sie die AssemblyVersion
Attribut mit einem Sternchen enden lassen, zum Beispiel:
[assembly: AssemblyVersion("2.10.*")]
Visual Studio erhöht die endgültige Zahl für Sie entsprechend der diese Regelungen (Danke Galets, ich hatte das völlig falsch verstanden!)
Um diese Version im Code zu referenzieren, so dass Sie sie dem Benutzer anzeigen können, verwenden Sie reflection
. Zum Beispiel,
Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
DateTime buildDate = new DateTime(2000, 1, 1)
.AddDays(version.Build).AddSeconds(version.Revision * 2);
string displayableVersion = $"{version} ({buildDate})";
Drei wichtige Fallstricke, die Sie kennen sollten
Von @ashes999:
Es ist auch erwähnenswert, dass, wenn beide AssemblyVersion
y AssemblyFileVersion
angegeben sind, werden Sie dies in Ihrer .exe nicht sehen.
Von @BrainSlugs83:
Nur die 4. Zahl wird als *
kann schlecht sein, da die Version nicht immer inkrementiert wird. Die 3. Zahl ist die Anzahl der Tage seit dem Jahr 2000 et die 4. Zahl ist die Anzahl der Sekunden seit Mitternacht (geteilt durch 2) [ES IST KEIN RANDOM] . Wenn Sie die Lösung also an einem Tag spät und am nächsten Tag früh erstellt haben, hätte die spätere Version eine frühere Versionsnummer. Ich empfehle immer die Verwendung von X.Y.*
anstelle von X.Y.Z.*
weil sich Ihre Versionsnummer auf diese Weise IMMER erhöhen wird.
Bei neueren Versionen von Visual Studio tritt dieser Fehler auf:
(dieses Thema wurde 2009 begonnen)
Die angegebene Versionszeichenfolge enthält Platzhalter, die nicht mit dem Determinismus vereinbar sind. Entfernen Sie entweder Platzhalter aus der Versionszeichenfolge oder deaktivieren Sie den Determinismus für diese Kompilierung.
Siehe diese SO-Antwort, die erklärt, wie man Determinismus aufheben ( https://stackoverflow.com/a/58101474/1555612 )