Semantic Versioning
Bei Semantic Versioning handelt es sich um einen Versuch, die Versionierung von Software zu standardisieren. Eine Versionsnummer besteht dabei aus drei Bereichen, die weiter unten beschrieben werden.
Ein wichtiger Faktor bei Semantic Versioning (kurz SemVer) ist, dass die Versionsnummer immer eine Aussage über die Art der Veränderung zur Vorgängerversion aussagen und nie für Marketingzwecke oder ähnliches genutzt werden dürfen.
Major Version
Der erste Teil einer Versionsnummer ist die Major Version. Diese wird erhöht, wenn Code geändert wird, der nicht kompatibel mit der Vorgängerversion ist. Dies ist beispielsweise die Änderung einer Methodensignatur oder das Änderung von Interfaces.
Minor Version
Der zweite Teil ist die Minor Version. Dieser wird erhöht, wenn die Änderung zwar nach wie vor kompatibel mit der Vorgängerversion ist, aber z.B. um neue Features erweitert wurde.
Patch Version
Der dritte Teil ist die Patch Version. Dieser wird erhöht, wenn z.B. eine Korrektur gemacht wurde. Dabei wurden keine neuen Funktionen ergänzt und auch keine Methodensignaturen geändert, sondern z.B. rein der Code innerhalb einer Funktion.
Prelease
Zusätzlich gibt es noch die Möglichkeit Prerelease Tags zu vergeben. Dies bedeutet, dass die Version beispielsweise in einem Alpha oder Beta-Stadium ist und noch nicht für den produktiven Einsatz geeignet. Hierbei wird bei der Versionsnummer noch ein Zusatz angehängt: 3.0.1-alpha. Preleases werden standardmäßig bei der Suche nach einem Paket (NuGet, NPM) ignoriert und müssen explizit angegeben werden, um sie zu verwenden.
Versionsnummer in dotnet core Projekten
Package version
Dies ist die Version, die bei der Suche nach dem Paket (NuGet, NPM) verwendet wird.
Assembly Version
Dieser Version wird vom .NET Framework während der Build- und Laufzeit verwendet, um die passende Assembly zu finden und zu verwenden. Beim Hinzufügen von Referenzen wird die hinzugefügte Versionsnummer eingebettet. Zur Laufzeit muss diese Versionsnummer vorhanden sein.
Assembly File Version
Dies ist die Version die z.B. im Windows Explorer in den Details angezeigt wird. Diese Version hat ansonsten keinerlei Bedeutung.
Sowohl Assembly Version als auch Assembly File Version haben einen leicht anderen Aufbau. Major.Minor.Patch.Build, wobei in diesem Fall alle vier Bereiche aus Nummern bestehen.