Übersicht über die .NET-Versionsverwaltung
Mit der .NET-Runtime und dem .NET SDK werden neue Features zu unterschiedlichen Frequenzen hinzugefügt. In der Regel wird das SDK häufiger aktualisiert als die Runtime. Dieser Artikel beschreibt die Runtime und die SDK-Versionsnummern.
.NET veröffentlicht immer im November eine neue Hauptversion. Gleichmäßig nummerierte Releases wie .NET 6 oder .NET 8 werden langfristig unterstützt (LTS). Ungerade Releases werden bis zur nächsten Hauptversion unterstützt. Beim neuesten Release von .NET handelt es sich um .NET 6.
Die .NET-Runtime verfolgt einen Hauptversions-/Nebenversions-/Patchansatz für die Versionsverwaltung, der semantische Versionierung verwendet.
Das .NET SDK folgt jedoch keiner semantischen Versionierung. Das .NET SDK wird schneller veröffentlicht, und seine Versionsnummern müssen sowohl die angepasste Runtime als auch die eigenen Nebenversions- und Patchreleases des SDK kommunizieren.
Die ersten beiden Stellen der Versionsnummer des .NET SDK stimmen mit der Version der .NET-Runtime überein, mit der es veröffentlicht wurde. Jede Version des SDK kann Anwendungen für diese Runtime bzw. niedrigere Versionen erstellen.
Die dritte Stelle der SDK-Versionsnummer gibt sowohl die Nebenversions- als auch die Patchnummer an. Die Nebenversion wird mit 100 multipliziert. Die letzten zwei Ziffern stehen für die Patchnummer. Nebenversion 1, Patchversion 2 würde als 102 dargestellt. Im Folgenden ist eine mögliche Sequenz der Runtime- und SDK-Versionsnummern aufgeführt:
Change | .Net-Runtime | .NET SDK (*) |
---|---|---|
Erstrelease | 5.0.0 | 5.0.100 |
SDK-Patch | 5.0.0 | 5.0.101 |
Runtime und SDK-Patch | 5.0.1 | 5.0.102 |
SDK-Featureänderung | 5.0.1 | 5.0.200 |
HINWEISE:
- Wenn das SDK vor einem Runtimefeatureupdate 10 Featureupdates aufweist, werden die Versionsnummern in die 1000er-Serie übernommen. Version 5.0.1000 folgt dann auf die Version 5.0.900. Diese Situation wird nicht erwartet.
- 99 Patchreleases ohne Featurerelease treten nicht auf. Nähert sich ein Release dieser Version, wird ein Featurerelease erzwungen.
Weitere Details finden Sie im ursprünglichen Vorschlag im Repository dotnet/designs.
Die .NET-Runtime verwendet im Großen und Ganzen die semantische Versionierung (SemVer) und übernimmt die Verwendung der MAJOR.MINOR.PATCH
-Versionierung mithilfe der verschiedenen Teile der Versionsnummer, um den Grad und den Typ der Änderung zu beschreiben.
MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]
Die optionalen Teile PRERELEASE
und BUILDNUMBER
sind nie Bestandteil von unterstützten Versionen und sind nur in nächtlichen Builds vorhanden, die lokal aus Quellzielen und nicht unterstützten Vorschauversionen erstellt werden.
MAJOR
wird einmal pro Jahr inkrementiert und kann folgende Merkmale aufweisen:- Erhebliche Änderungen am Produkt oder eine neue Produktrichtung
- Eingeführte Breaking Changes in der API. Die Messlatte zum Akzeptieren von aktuellen Änderungen hoch liegt.
- eine neue
MAJOR
-Version einer vorhandenen Abhängigkeit übernommen wird
Hauptversionen werden einmal pro Jahr eingeführt, bei gleichmäßig nummerierten Versionen handelt es sich um langfristig unterstützte Releases (LTS, Long-Term Supported). Das erste LTS-Release, das dieses Versionsverwaltungsschema verwendet, ist .NET 6. Die neueste Nicht-LTS-Version ist .NET 5.
MINOR
wird inkrementiert, wenn:- eine öffentliche API-Oberfläche hinzugefügt wird
- ein neues Verhalten hinzugefügt wird
- eine neue
MINOR
-Version einer vorhandenen Abhängigkeit übernommen wird - eine neue Abhängigkeit eingeführt wird
PATCH
wird inkrementiert, wenn:- Fehlerkorrekturen vorgenommen werden
- Unterstützung für eine neuere Plattform hinzugefügt wird
- eine neue
PATCH
-Version einer vorhandenen Abhängigkeit übernommen wird - eine andere Änderung vorgenommen wurde, die keinem der zuvor beschriebenen Fälle entspricht
Wenn mehrere Änderungen vorgenommen wurden, wird das höchste Element, was von den einzelnen Änderungen betroffen ist, inkrementierte, und die folgenden werden auf 0 (null) zurückgesetzt. Wenn z. B. MAJOR
inkrementiert wird, wird MINOR.PATCH
auf 0 (null) zurückgesetzt. Wenn MINOR
inkrementiert wird, wird PATCH
auf 0 (null) zurückgesetzt, während MAJOR
nicht beeinträchtigt wird.
Die für .NET heruntergeladenen Dateien tragen die Versionsnummer, zum Beispiel dotnet-sdk-5.0.301-win10-x64.exe
.
Der Versionsnummer von Vorschauversionen ist ein -preview.[number].[build]
angehängt. Beispielsweise 6.0.0-preview.5.21302.13
.
Nach Erscheinen eines Release produzieren die Releaseabteilungen im Allgemeinen keine täglichen Builds mehr und beginnen stattdessen mit der Produktion von Wartungsbuilds. Der Versionsangabe von Wartungsversionen ist ein -servicing-[number]
angehängt. Beispielsweise 5.0.1-servicing-006924
.