.NET Core-Versionskontrolle.NET Core versioning

.NET Core besteht aus NuGet-Paketen, Tools und Frameworks, die als eine Einheit verteilt werden..NET Core is made of NuGet packages, tools, and frameworks that are distributed as a unit. Jede dieser Plattformschichten kann eine separate Versionsangabe ausweisen.Each of these platform layers can be versioned separately, enabling better agility. Obwohl es ein gewisses Maß an Flexibilität bei der Versionskontrolle gibt, möchte man die Plattform als Einheit versionieren, damit das Produkt einfacher zu verstehen ist.While there is significant versioning flexibility in that regard, there's also a desire to version the platform as a unit to make the product easier to understand.

In diesem Artikel soll geklärt werden, wie das .NET Core SDK und die Runtime versioniert werden.This article aims at clarifying how the .NET Core SDK and runtime are versioned.

Es gibt viele bewegliche Teile, die in .NET Core unabhängige Versionsangaben haben können.There are lots of moving parts that version independently in .NET Core. Ab .NET Core 2.0 gibt es jedoch eine leicht verständliche Versionsnummer der höchsten Ebene, die als die Version von .NET Core als Ganzes angesehen wird.However, starting with .NET Core 2.0, there is an easy to understand top-level version number that everybody understands to be the version of ".NET Core" as a whole. Im Rest dieses Dokuments wird ausführlich auf die Versionierung aller Teile eingegangen.The rest of this document goes into the details of the versioning of all those parts. Diese Informationen können z.B. für Sie wichtig sein, wenn Sie ein Paket-Manager sind.These details can be important if you're a package manager, for example.

Wichtig

Die in diesem Thema beschriebenen Details zur Versionsverwaltung gelten nicht für die aktuelle Version von SDK und Runtime für .NET Core.The versioning details explained on this topic don't apply to the current version of the .NET Core SDK and runtime. Das Versionsschema ändert sich in künftigen Releases.The version scheme is changing in future releases. Die aktuellen Vorschläge werden im Repository dotnet/designs gezeigt.You can see the current proposal at the dotnet/designs repository.

VersionsinformationenVersioning details

Ab .NET Core 2.0 weisen Downloads eine einzige Versionsnummer im Dateinamen auf.With .NET Core 2.0, downloads show a single version number in their file name. Folgende Versionsnummern wurden vereinheitlicht.The following version numbers were unified:

  • das freigegebene Framework und die damit verknüpfte RuntimeThe shared framework and associated runtime.
  • das .NET Core SDK und die verknüpfte .NET Core-CLIThe .NET Core SDK and associated .NET Core CLI.
  • das Microsoft.NETCore.App-MetapaketThe Microsoft.NETCore.App metapackage.

Der Gebrauch einer einzelnen Versionsnummer erleichtert es Benutzern zu wissen, welche Version des SDK sie auf ihren Entwicklungscomputern installieren müssen und was die entsprechende Version des freigegebenen Frameworks sein soll, wenn sie eine Produktionsumgebung bereitstellen.The use of a single version number makes it easier for users to know what version of the SDK to install on their dev machines, and what the corresponding version of the shared framework should be when time comes to provision a production environment. Beim Herunterladen eines SDK oder einer Runtime ist die angezeigt Versionsnummer die gleiche.When downloading an SDK or runtime, the version number you see is going to be the same.

InstallerInstallers

Ab .NET Core 2.0 folgen die Downloads für die täglichen Builds und Releases einem neuen Benennungsschema, das leichter verständlich ist.With .NET Core 2.0, downloads for the daily builds and releases adhere to a new naming scheme that is easier to understand. Die Benutzeroberfläche des Installer bei diesen Downloads wurde angepasst, sodass sie nun die Namen und Versionen der installierten Komponenten übersichtlich anzeigen.The installer UI in those downloads was also modified to clearly present the names and versions of the components being installed. Insbesondere weisen Titel jetzt die gleiche Versionsnummer auf, die auch im Dateinamen des Downloads verwendet wird.In particular, titles now show the same version number that is in the download's file name.

DateinamenformatFile name format

[product]-[component]-[major].[minor].[patch]-[previewN]-[optional build #]-[rid].[file ext]

Im Folgenden finden Sie einige Beispiele für dieses Format:Here are some examples of this format:

dotnet-runtime-2.0.4-osx.10.12-x64.pkg            # Mac runtime installer
dotnet-sdk-2.0.4-win-x64.exe                      # Windows SDK installer
dotnet-sdk-2.0.4-linux-x64.tar.gz                 # Linux binary archive

#Ubuntu file set needed for the SDK
dotnet-host-2.0.4-ubuntu.16.04-x64.deb            # Host / muxer and host policy
dotnet-runtime-2.0.4-ubuntu.16.04-x64.deb         # runtime
dotnet-sdk-2.0.4-ubuntu.16.04-x64.deb             # SDK tools

Das Format ist lesbar und zeigt genau an, was sie herunterladen, welche Version dies ist und wo sie diese verwenden können.The format is readable and clearly shows what you're downloading, what version it is, and where you can use it. Der Laufzeitpaketname enthält runtime und das SDK SDK.The runtime package name includes runtime, and the SDK includes SDK.

UI-ZeichenfolgenformatUI string format

Alle Websitebeschreibungen und UI-Zeichenfolgen im Installer sind weiterhin konsistent, genau und einfach.All web site descriptions and UI strings in the installers are kept consistent, accurate, and simple. Die folgende Tabelle enthält einige Beispiele:The following table shows some examples:

InstallerInstaller FenstertitelWindow Title Anderer Inhalt im InstallerOther content in installer Das wird installiertWhat is installed
SDKSDK .NET Core 2.0 SDK (x64)-Installer.NET Core 2.0 SDK (x64) Installer .NET Core 2.0.4 SDK.NET Core 2.0.4 SDK .NET Core 2.0.4-Tools + .NET Core 2.0.4-Runtime.NET Core 2.0.4 Tools + .NET Core 2.0.4 Runtime
LaufzeitRuntime .NET Core 2.0 Runtime (x64)-Installer.NET Core 2.0 Runtime (x64) Installer .NET Core 2.0.4-Runtime.NET Core 2.0.4 Runtime .NET Core 2.0.4-Runtime.NET Core 2.0.4 Runtime

Vorschauversionen unterscheiden sich nur geringfügig:Preview releases differ only slightly:

InstallerInstaller FenstertitelWindow Title Anderer Inhalt im InstallerOther content in installer Das wird installiertWhat is installed
SDKSDK .NET Core 2.0 Preview 1 SDK (x64)-Installer.NET Core 2.0 Preview 1 SDK (x64) Installer .NET Core 2.0.0 Preview 1 SDK.NET Core 2.0.0 Preview 1 SDK .NET Core 2.0.0 Preview 1-Tools + .NET Core 2.0.0 Preview 1-Runtime.NET Core 2.0.0 Preview 1 Tools + .NET Core 2.0.0 Preview 1 Runtime
LaufzeitRuntime .NET Core 2.0 Preview 1 Runtime (x64)-Installer.NET Core 2.0 Preview 1 Runtime (x64) Installer .NET Core 2.0.0 Preview 1-Runtime.NET Core 2.0.0 Preview 1 Runtime .NET Core 2.0.0 Preview 1-Runtime.NET Core 2.0.0 Preview 1 Runtime

Möglicherweise enthält eine SDK Version mehr als eine Version der Runtime.It may happen that an SDK release contains more than one version of the runtime. Wenn dies der Fall ist, sieht die UI des Installer folgendermaßen aus (es wird nur die SDK Version gezeigt, die installierten Runtimeversionen werden auf einer Zusammenfassungsseite am Ende des Installationsprozesse unter Windows und Mac angezeigt):When that happens, the installer UX looks like the following (only the SDK version is shown and the installed Runtime versions are shown on a summary page at the end of the installation process on Windows and Mac):

InstallerInstaller FenstertitelWindow Title Anderer Inhalt im InstallerOther content in installer Das wird installiertWhat is installed
SDKSDK .NET Core 2.1 SDK (x64)-Installer.NET Core 2.1 SDK (x64) Installer .NET Core 2.1.1 SDK.NET Core 2.1.1 SDK
.NET Core 2.1.1-Runtime.NET Core 2.1.1 Runtime
.NET Core 2.0.6-Runtime.NET Core 2.0.6 Runtime
.NET Core 2.1.1-Tools + .NET Core 2.1.1-Runtime + .NET Core 2.0.6-Runtime.NET Core 2.1.1 Tools + .NET Core 2.1.1 Runtime + .NET Core 2.0.6 Runtime

Möglicherweise müssen auch nur die .NET Core-Tools aktualisiert werden, ohne dass Änderungen der Runtime nötig sind.It's also possible that .NET Core Tools need to be updated, without runtime changes. In diesem Fall wird die SDK Version erhöht (z.B. auf 2.1.2), und die Runtime schließt auf, wenn sie das nächste Mal ausgeliefert wird (z.B. werden die Runtime und das SDK das nächste Mal in Version 2.1.3 geliefert).In that case, the SDK version is increased (for example, to 2.1.2) and then the Runtime catches up the next time it ships (for example, both the Runtime and SDK ship the next time as 2.1.3).

Paket-ManagerPackage managers

.NET Core kann neben Microsoft auch von anderen Entitäten verteilt werden..NET Core can be distributed by other entities than Microsoft. Insbesondere Besitzer einer Linux-Verteilung und Paketverwalter verwenden möglicherweise .NET Core-Pakete in ihren Paket-Managern.In particular, Linux distribution owners and package maintainers may add .NET Core packages to their package managers. Empfehlungen zur Benennung und Versionierung dieser Pakete finden Sie unter .NET Core distribution packaging (Packen von .NET Core-Verteilungen).For recommendations on how those packages should be named and versioned, see .NET Core distribution packaging.

Minimales PaketsetMinimum package set

  • dotnet-runtime-[major].[minor]: eine Runtime mit der angegebenen Version (nur die neueste Patchversion für eine bestimmte Kombination aus Haupt- und Nebenversionen sollte im Paket-Manager verfügbar sein).dotnet-runtime-[major].[minor]: a runtime with the specified version (only the latest patch version for a given major+minor combination should be available in the package manager). Neue Patchversionen aktualisieren das Paket, aber neue Haupt- oder Nebenversionen sind getrennte Pakete.New patch versions update the package, but new minor or major versions are separate packages.

    Abhängigkeiten: dotnet-hostDependencies: dotnet-host

  • dotnet-sdk: das neueste SDKdotnet-sdk: the latest SDK. update führt ein Rollforward für Haupt-, Neben- und Patchversionen aus.update rolls forward major, minor, and patch versions.

    Abhängigkeiten: die neueste dotnet-sdk-[major].[minor]Dependencies: the latest dotnet-sdk-[major].[minor].

  • dotnet-sdk-[major].[minor]: das SDK mit der angegebenen Version.dotnet-sdk-[major].[minor]: the SDK with the specified version. Die angegebene Version ist die höchste enthaltene Version von enthaltenen freigegebenen Frameworks, sodass Benutzer problemlos ein SDK mit einem freigegebenen Framework verknüpfen können.The version specified is the highest included version of included shared frameworks, so that users can easily relate an SDK to a shared framework. Neue Patchversionen aktualisieren das Paket, aber neue Haupt- oder Nebenversionen sind getrennte Pakete.New patch versions update the package, but new minor or major versions are separate packages.

    Abhängigkeiten: dotnet-host, ein oder mehrere dotnet-runtime-[major].[minor] (eine dieser Runtimes wird durch den SDK Code selbst verwendet, mit den anderen können Benutzer erstellen und ausführen).Dependencies: dotnet-host, one or more dotnet-runtime-[major].[minor] (one of those is used by the SDK code itself, the others are here for users to build and run against).

  • dotnet-host: der neueste Host.dotnet-host: the latest host.

VorschauversionenPreview versions

Paketverwalter können möglicherweise Vorschauversionen der Runtime und SDKs einschließen.Package maintainers may decide to include preview versions of the runtime and SDK. Beziehen Sie diese Vorschauversionen niemals in das nicht versionierte dotnet-sdk-Paket ein. Sie können sie aber als Pakete mit Versionsnummer mit einem zusätzlichen Vorschaumarker freigegeben, der an die Abschnitte der Haupt- und Nebenversion des Namens angefügt ist.Don't include those preview versions in the unversioned dotnet-sdk package, but you can release them as versioned packages with an additional preview marker appended to the major and minor version sections of the name. Beispielsweise gibt es möglicherweise ein Paket dotnet-sdk-2.0-preview1-final.For example, there may be a dotnet-sdk-2.0-preview1-final package.

DockerDocker

Eine allgemeine Namenskonvention für ein Dockertag ist das Platzieren der Versionsnummer vor den Komponentennamen.A general Docker tag naming convention is to place the version number before the component name. Diese Konvention wird möglicherweise weiter eingesetzt.This convention may continue to be utilized. Die aktuellen Tags enthalten nur die Version der Runtime in folgender Form:The current tags include only the Runtime version as follows.

  • 1.0.8-runtime1.0.8-runtime
  • 1.0.8-sdk1.0.8-sdk
  • 2.0.4-runtime2.0.4-runtime
  • 2.0.4-sdk2.0.4-sdk
  • 2.1.1-runtime2.1.1-runtime
  • 2.1.1-sdk2.1.1-sdk

Die SDK Tags sollten aktualisiert werden, sodass sie die Version des SDK statt der Runtime widerspiegeln.The SDK tags should be updated to represent the SDK version rather than Runtime.

Es besteht die Möglichkeit, dass die .NET Core-Tools (einschließlich SDK) repariert, aber mit einer vorhandenen Runtime erneut bereitgestellt werden.It's also possible that the .NET Core CLI tools (included in the SDK) are fixed but reship with an existing runtime. In diesem Fall wird die SDK-Version erhöht (z.B. auf 2.1.2), und die Runtime schließt auf, wenn sie das nächste Mal ausgeliefert wird (z.B. werden die Runtime und das SDK das nächste Mal in Version 2.1.3 geliefert).In that case, the SDK version is increased (for example, to 2.1.2), and then the Runtime catches up the next time it ships (for example, both the Runtime and SDK ship the following time as 2.1.3).

Semantische VersionskontrolleSemantic Versioning

.NET Core verwendet die semantische Versionskontrolle (SemVer) und übernimmt den Gebrauch der MAJOR.MINOR.PATCH-Versionierung mithilfe der verschiedenen Teile der Versionsnummer, um den Grad und die Typ der Änderung zu beschreiben..NET Core uses Semantic Versioning (SemVer), adopting the use of MAJOR.MINOR.PATCH versioning, using the various parts of the version number to describe the degree and type of change.

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.The optional PRERELEASE and BUILDNUMBER parts are never part of supported releases and only exist on nightly builds, local builds from source targets, and unsupported preview releases.

Wie werden Versionsnummern inkrementiert?How version numbers are incremented?

MAJOR wird inkrementiert, wenn:MAJOR is incremented when:

  • eine älter Version nicht mehr unterstützt wirdAn old version is no longer supported.
  • eine neue MAJOR-Version einer vorhandenen Abhängigkeit übernommen wirdA newer MAJOR version of an existing dependency is adopted.
  • die Standardeinstellung eines Kompatibilitätsproblems deaktiviert wirdThe default setting of a compatibility quirk is changed to "off."

MINOR wird inkrementiert, wenn:MINOR is incremented when:

  • eine öffentliche API-Oberfläche hinzugefügt wirdPublic API surface area is added.
  • ein neues Verhalten hinzugefügt wirdA new behavior is added.
  • eine neue MINOR-Version einer vorhandenen Abhängigkeit übernommen wirdA newer MINOR version of an existing dependency is adopted.
  • eine neue Abhängigkeit eingeführt wirdA new dependency is introduced.

PATCH wird inkrementiert, wenn:PATCH is incremented when:

  • Fehlerkorrekturen vorgenommen werdenBug fixes are made.
  • Unterstützung für eine neuere Plattform hinzugefügt wirdSupport for a newer platform is added.
  • eine neue PATCH-Version einer vorhandenen Abhängigkeit übernommen wirdA newer PATCH version of an existing dependency is adopted.
  • eine andere Änderung vorgenommen wurde, die keinem der zuvor beschriebenen Fälle entsprichtAny other change doesn't fit one of the previous cases.

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.When there are multiple changes, the highest element affected by individual changes is incremented, and the following ones are reset to zero. Wenn z.B. MAJOR inkrementiert wird, werden MINOR und PATCH auf 0 (null) zurückgesetzt.For example, when MAJOR is incremented, MINOR and PATCH are reset to zero. Wenn MINOR inkrementiert wird, wird PATCH auf 0 (null) zurückgesetzt, während MAJOR nicht beeinträchtigt wird.When MINOR is incremented, PATCH is reset to zero while MAJOR is left untouched.

VorschauversionenPreview versions

Der Version von Vorschauversionen ist ein -preview[number]-([build]|"final") angehängt.Preview versions have a -preview[number]-([build]|"final") appended to the version. Beispielsweise 2.0.0-preview1-final.For example, 2.0.0-preview1-final.

Wartung von VersionenServicing versions

Nach Erscheinen eines Release produzieren die Releaseabteilungen im Allgemeinen keine täglichen Builds mehr und beginnen stattdessen mit der Produktion von Wartungsbuilds.After a release goes out, the release branches generally stop producing daily builds and instead start producing servicing builds. Der Versionsangabe von Wartungsversionen ist ein -servicing-[number] angehängt.Servicing versions have a -servicing-[number] appended to the version. Beispielsweise 2.0.1-servicing-006924.For example, 2.0.1-servicing-006924.

LTS vs. aktuellLTS vs. current

Es gibt zwei verschiedene Versionsreihen für .NET Core: Long Term Support und AktuellThere are two trains of releases for .NET Core: Long Term Support (LTS) and Current. So können sich Benutzer für den Stabilitätsgrad und neue Funktionen entscheiden, die sie möchten, ohne das der Support verloren geht.That enables users to pick the level of stability and new features they want, while still being supported.

  • LTS bedeutet, dass Sie weniger häufig neue Funktionen bekommen, gleichzeitig aber eine voller entwickelte Plattform haben.LTS means you get new features less frequently, but you have a more mature platform. LTS verfügt zudem über einen längeren Supportzeitraum.LTS also has a longer period of support.
  • Aktuell bedeutet, dass Sie häufiger neue Funktionen und APIs erhalten. Dabei ist allerdings der Nachteil, dass Sie Updates in einem engeren Zeitfenster installieren müssen und diese mit einer höheren Frequenz bereitgestellt werden.Current means you get new features and APIs more frequently, but the disadvantage is that you have a shorter window of time to install updates, and those updates happen more frequently. Aktuell verfügt auch über vollen Support. Der Supportzeitraum ist allerdings kürzer als bei LTS.Current is also fully supported but the support period is shorter than LTS.

Eine „aktuelle“ Version kann auf LTS höher gestuft werden.A "Current" version may get promoted to LTS.

LTS und Aktuell sollten als Bezeichnungen angesehen werden, die wir bestimmten Versionen geben, um deren Grad an Support deutlich zu machen."LTS" and "Current" should be considered as labels that we put on specific releases to make a statement about the associated level of support.

Weitere Informationen finden Sie unter .NET Core Support Lifecycle Fact Sheet (Fakten zur Lebensdauer des .NET Core Support).For more information, see .NET Core Support Lifecycle Fact Sheet.

Informationen zum VersionsschemaVersioning scheme details

.NET Core besteht aus den folgenden Teilen:.NET Core is made of the following parts:

  • Ein Host: entweder dotnet.exe für vom Framework abhängige Anwendungen oder <appname>.exe für eigenständige Anwendungen.A host: either dotnet.exe for framework-dependent applications, or <appname>.exe for self-contained applications.
  • einem SDK (die Tools, die ein Entwickler auf seinem Computer benötigt, aber nicht während der Produktion)An SDK (the set of tools necessary on a developer's machine, but not in production).
  • eine RuntimeA runtime.
  • eine freigegebene Frameworkimplementierung, die in Paketen verteilt wirdA shared framework implementation, distributed as packages. Jedes Paket wird unabhängig versioniert, dies gilt besonders für die Patchversionierung.Each package is versioned independently, particularly for patch versioning.
  • ein Satz von Metapaketen, die auf detaillierte Pakete als versionierte Einheit verweisen (optional)Optionally, a set of metapackages that reference fine-grained packages as a versioned unit. Metapakete können separat von Paketen versioniert werden.Metapackages can be versioned separately from packages.

.NET Core enthält zudem einen Satz von Zielframeworks (z.B. netstandard odernetcoreapp), die mit der Inkrementierung von Versionsnummern einen immer größeren API-Satz darstellen..NET Core also includes a set of target frameworks (for example, netstandard or netcoreapp) that represent a progressively larger API set, as version numbers are incremented.

.NET-Standard.NET Standard

.NET Standard hat ein MAJOR.MINOR-Versionierungsschema verwendet..NET Standard has been using a MAJOR.MINOR versioning scheme. Die PATCH-Ebene ist für .NET Standard nicht nützlich, da sie einen Satz von Verträgen ausdrückt, die seltener durchlaufen werden. Sie stellt nicht die gleichen Anforderungen für die Versionierung wie eine tatsächliche Implementierung dar.PATCH level isn't useful for .NET Standard because it expresses a set of contracts that are iterated on less often and doesn't present the same requirements for versioning as an actual implementation.

Es gibt keine echte Kopplung zwischen Versionen von .NET Standard und .NET Core: .NET Core 2.0 implementiert .NET Standard 2.0, aber es gibt keine Garantie, dass zukünftige Versionen von .NET Core die gleiche Version von .NET Standard zuordnen.There is no real coupling between .NET Standard versions and .NET Core versions: .NET Core 2.0 happens to implement .NET Standard 2.0, but there is no guarantee that future versions of .NET Core will map to the same .NET Standard version. .NET Core kann APIs ausliefern, die nicht von .NET Standard definiert sind und kann so neue Versionen ausliefern, ohne das ein neues .NET Standard erforderlich ist..NET Core can ship APIs that aren't defined by .NET Standard, and, as such, may ship new versions without requiring a new .NET Standard. .NET Standard ist zudem ein Konzept, das für andere Ziele gilt, wie z.B. .NET Framework oder Mono, auch wenn dessen Beginn zufällig mit dem von .NET Core zusammenfällt..NET Standard is also a concept that applies to other targets, such as .NET Framework or Mono, even if its inception happened to coincide with that of .NET Core.

PaketePackages

Bibliothekspakete verbessern sich unabhängig und verfügen über eine unabhängige Versionsangabe.Library packages evolve and version independently. Pakete, die sich mit .NET Framework System.*-Assemblys überschneiden, verwenden normalerweise 4.x-Versionen, die mit der 4.x-Versionskontrolle von .NET Framework ausgerichtet werden.Packages that overlap with .NET Framework System.* assemblies typically use 4.x versions, aligning with the .NET Framework 4.x versioning (a historical choice). Pakete, die sich nicht mit den .NET Framework-Bibliotheken überschneiden (z.B. System.Reflection.Metadata) beginnen normalerweise bei 1.0 und erhöhen ab dort.Packages that do not overlap with the .NET Framework libraries (for example, System.Reflection.Metadata) typically start at 1.0 and increment from there.

Die Pakete, die von NETStandard.Library beschrieben sind, werden besonders behandelt, da sie sich an der Basis der Plattform befinden.The packages described by NETStandard.Library are treated specially due to being at the base of the platform.

NETStandard.Library-Pakete werden in der Regel als Gruppe versioniert, da sie untereinander über Abhängigkeiten auf Implementierungsebene verfügen.NETStandard.Library packages will typically version as a set, since they have implementation-level dependencies between them.

MetapaketeMetapackages

Die Versionierung für .NET Core-Metapakete basiert auf der Version von .NET Core, zu der sie gehören.Versioning for .NET Core metapackages is based on the .NET Core version they are a part of.

Die Metapakete in .NET Core 2.1.3 sollten z.B. alle 2.1 als ihre MAJOR- und MINOR-Versionsnummer haben.For instance, the metapackages in .NET Core 2.1.3 should all have 2.1 as their MAJOR and MINOR version numbers.

Die Patchversion für die Metapakete wird jedes Mal inkrementiert, wenn ein verwiesenes Paket aktualisiert wird.The patch version for the metapackage is incremented every time any referenced package is updated. Patchversionen erhalten keine aktualisierte Frameworkversion.Patch versions don't include an updated framework version. Die Metapakete sind deshalb nicht mit SemVer kompatibel, weil ihr Schema der Versionskontrolle nicht den Grad der Änderung in den zugrundeliegenden Paketen darstellt, sondern hauptsächlich die API-Ebene.As a result, the metapackages aren't strictly SemVer-compliant because their versioning scheme doesn't represent the degree of change in the underlying packages, but primarily of the API level.

Es existieren aktuell zwei primäre Metapakete für .NET Core:There are currently two primary metapackages for .NET Core:

Microsoft.NETCore.AppMicrosoft.NETCore.App

  • v1.0 ab .NET Core 1.0 (diese Versionen stimmen überein)v1.0 as of .NET Core 1.0 (these versions match).
  • Ist dem netcoreapp-Framework zugeordnetMaps to the netcoreapp framework.
  • Beschreibt die Pakete in der .NET Core-VerteilungDescribes the packages in the .NET Core distribution.

Hinweis: Microsoft.NETCore.Portable.Compatibility ist ein weiteres .NET Core-Metapaket, das existiert, um die Kompatibilität mit .NET-Implementierungen zu gewährleisten, die vor .NET Standard vorgenommen wurden.Note: Microsoft.NETCore.Portable.Compatibility is another .NET Core metapackage that exists to enable compatibility with pre-.NET Standard implementation of .NET. Es wird keinem bestimmten Framework zugeordnet und wird daher wie ein Paket versioniert.It doesn't map to a particular framework, so it versions like a package.

NETStandard.LibraryNETStandard.Library

NETStandard.Library beschreibt die Bibliotheken, die Teil von .NET Standard sind.NETStandard.Library describes the libraries that are part of the .NET Standard. Gilt für alle .NET-Implementierungen (z.B. .NET Framework, .NET Core und Mono), die .NET-Standard unterstützen.Applies to all .NET implementations that support .NET Standard, such as .NET Framework, .NET Core, and Mono.

ZielframeworksTarget frameworks

Zielframework-Versionen werden aktualisiert, wenn neue APIs hinzugefügt werden.Target framework versions are updated when new APIs are added. Sie verfügen über kein Konzept der Patchversion, da sie die API-Form und keine Implementierungsprobleme darstellen.They have no concept of patch version, since they represent API shape and not implementation concerns. Major- und Minor-Versionierung folgt SemVer-Regeln, die bereits angegeben wurden, und stimmt mit den MAJOR- und MINOR-Nummern der Verteilung von .NET Framework überein, die sie implementieren.Major and minor versioning follows the SemVer rules specified earlier, and coincides with the MAJOR and MINOR numbers of the .NET Core distributions that implement them.

Versionierung in der PraxisVersioning in practice

Wenn Sie .NET Core herunterladen, enthält der Name der heruntergeladenen Datei die Version, z.B. dotnet-sdk-2.0.4-win10-x64.exe.When you download .NET Core, the name of the downloaded file carries the version, for example, dotnet-sdk-2.0.4-win10-x64.exe.

Es gibt täglich Commits und Pull Requests auf .NET Core-Repositorys auf GitHub, wodurch viele Bibliotheken neue Builds erhalten.There are commits and pull requests on .NET Core repos on GitHub on a daily basis, resulting in new builds of many libraries. Es ist nicht sehr praktisch, neue öffentliche .NET Core-Versionen für jede Änderung zu erstellen.It isn't practical to create new public versions of .NET Core for every change. Stattdessen werden die Änderungen über einen unbestimmten Zeitraum (z.B. Wochen oder Monate) aggregiert, bevor eine neue, öffentliche stabile .NET Core-Version erstellt wird.Instead, changes are aggregated over an undetermined period of time (for example, weeks or months) before making a new public stable .NET Core version.

Eine neue Version von .NET Core bringt Folgendes mit sich:A new version of .NET Core could mean several things:

  • Neue Versionen von Paketen und MetapaketenNew versions of packages and metapackages.
  • Neue Versionen von verschiedenen Frameworks, vorausgesetzt, neue APIs werden hinzugefügtNew versions of various frameworks, assuming the addition of new APIs.
  • Neue Version der .NET Core-VerteilungNew version of the .NET Core distribution.

Versand einer PatchversionShipping a patch release

Nach der Auslieferung einer Hauptversion von .NET Core (z.B. V 2.0.0) werden keine Änderungen auf Patchebene an .NET Core-Bibliotheken zur Behebung von Fehlern und zur Verbesserung der Leistung sowie der Zuverlässigkeit vorgenommen.After shipping a major release of .NET Core, such as version 2.0.0, patch-level changes are made to .NET Core libraries to fix bugs and improve performance and reliability. Dies bedeutet, dass keine neuen APIs eingeführt werden.That means that no new APIs are introduced. Die verschiedenen Metapakete werden aktualisiert, um auf die aktualisierten .NET Core-Bibliothekspakete zu verweisen.The various metapackages are updated to reference the updated .NET Core library packages. Die Metapakete werden als Patchupdates versioniert (MAJOR.MINOR.PATCH).The metapackages are versioned as patch updates (MAJOR.MINOR.PATCH). Zielframeworks werden niemals als Teil einer Patchversion aktualisiert.Target frameworks are never updated as part of patch releases. Eine neue .NET Core-Verteilung wird mit einer Versionsnummer freigegeben, die mit der des Microsoft.NETCore.App-Metadatenpakets übereinstimmt.A new .NET Core distribution is released with a version number that matches that of the Microsoft.NETCore.App metapackage.

Versenden einer NebenversionShipping a minor release

Nach der Auslieferung einer NET Core-Version mit einer inkrementierten MAJOR-Versionsnummer werden neue APIs den .NET Core-Bibliotheken hinzugefügt, sodass neue Szenarios ermöglicht werden.After shipping a .NET Core version with an incremented MAJOR version number, new APIs are added to .NET Core libraries to enable new scenarios. Die verschiedenen Metapakete werden aktualisiert, um auf die aktualisierten .NET Core-Bibliothekspakete zu verweisen.The various metapackages are updated to reference the updated .NET Core library packages. Die Metapakete werden als Patchupdates mit MAJOR- und MINOR-Versionsnummern versioniert, die mit der neuen Frameworkversion übereinstimmen.The metapackages are versioned as patch updates with MAJOR and MINOR version numbers matching the new framework version. Namen neuer Zielframeworks mit neuen MAJOR.MINOR-Versionen werden hinzugefügt, um die neuen APIs zu beschreiben (z.B. netcoreapp2.1).New target framework names with the new MAJOR.MINOR version are added to describe the new APIs (for example, netcoreapp2.1). Eine neue .NET Core-Verteilung wird mit einer übereinstimmenden Versionsnummer für das Metapaket Microsoft.NETCore.App freigegeben.A new .NET Core distribution is released with a matching version number to the Microsoft.NETCore.App metapackage.

Versenden einer HauptversionShipping a major release

Jedes Mal wenn eine neue Hauptversion von .NET Core ausgeliefert wird, wird die MAJOR-Versionsnummer inkrementiert, und die MINOR-Versionsnummer wird auf 0 (null) zurückgesetzt.Every time a new major version of .NET Core ships, the MAJOR version number gets incremented, and the MINOR version number gets reset to zero. Die neue Hauptversion enthält mindestens alle APIs, die durch Nebenversionen nach der vorherigen Hauptversion hinzugefügt wurden.The new major version contains at least all the APIs that were added by minor releases after the previous major version. Eine neue Hauptversion sollte neue, relevante Szenarios ermöglichen und den Support für eine ältere Plattform überflüssig machen.A new major version should enable important new scenarios, and it may also drop support for an older platform.

Die verschiedenen Metapakete werden aktualisiert, um auf die aktualisierten .NET Core-Bibliothekspakete zu verweisen.The various metapackages are updated to reference the updated .NET Core library packages. Das Microsoft.NETCore.App-Metapakete und das netcore-Zielframework werden als Hauptupdates versioniert, die mit der MAJOR-Versionsnummer der neuen Version übereinstimmen.The Microsoft.NETCore.App metapackage and the netcore target framework are versioned as a major update matching the MAJOR version number of the new release.

Siehe auchSee also

ZielframeworksTarget frameworks
.NET Core distribution packaging (Verpacken der Verteilung in .NET Core).NET Core distribution packaging
.NET Core Support Lifecycle Fact Sheet.NET Core Support Lifecycle Fact Sheet
.NET Core 2+ Versionsbindung.NET Core 2+ Version Binding