Ü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.

Versionsinformationen

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.

Semantische Versionierung

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.

Verstehen von Änderungen der Runtimeversionsnummer

  • 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.

Versionsnummern in Dateinamen

Die für .NET heruntergeladenen Dateien tragen die Versionsnummer, zum Beispiel dotnet-sdk-5.0.301-win10-x64.exe.

Vorschauversionen

Der Versionsnummer von Vorschauversionen ist ein -preview.[number].[build] angehängt. Beispielsweise 6.0.0-preview.5.21302.13.

Wartung von Versionen

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.

Siehe auch