.NET Core をバージョン管理する方法の概要Overview of how .NET Core is versioned

.NET Core とは .NET Core ランタイムと .NET Core SDK を示しており、これにはアプリケーションを開発するのに必要なツールが含まれています。.NET Core refers to the .NET Core Runtime and the .NET Core SDK, which contains the tools you need to develop applications. .NET Core SDK は、前のバージョンの .NET Core ランタイムをどれでも使用できるように設計されています。.NET Core SDKs are designed to work with any previous version of the .NET Core Runtime. この記事では、ランタイムおよび SDK のバージョン戦略について説明します。This article explains the runtime and the SDK version strategy. .NET Standard のバージョン番号については、.NET Standard に関する記事を参照してください。An explanation of version numbers for .NET Standard can be found in the article introducing .NET Standard.

.NET Core ランタイムと .NET Core SDK ではそれぞれ異なるレートで新しい機能が追加されます。一般に、運用環境で使用しているランタイムが .NET Core ランタイムによって変更されるよりも速く、.NET Core SDK でのツールの更新が行われます。The .NET Core Runtime and .NET Core SDK add new features at a different rate - in general the .NET Core SDK provides updated tools more quickly than the .NET Core Runtime changes the runtime you use in production.

バージョン管理の詳細Versioning details

".NET Core 2.1" は、.NET Core ランタイムのバージョン番号を示しています。".NET Core 2.1" refers to the .NET Core Runtime version number. .NET Core ランタイムでは、バージョン管理に対してメジャー/マイナー/パッチ アプローチが使用されており、これはセマンティック バージョニングに従っています。The .NET Core Runtime has a major/minor/patch approach to versioning that follows semantic versioning.

.NET Core SDK の場合は、セマンティック バージョニングに従っていません。The .NET Core SDK doesn't follow semantic versioning. .NET Core SDK の方が速くリリースされます。そのバージョンでは、揃えられたランタイムと SDK 独自のマイナー/パッチ リリースの両方が示される必要があります。The .NET Core SDK releases faster and its versions must communicate both the aligned runtime and the SDK's own minor and patch releases. .NET Core SDK バージョンの 1 番目と 2 番目の位置は、一緒にリリースされる .NET Core ランタイムと揃えられます。The first two positions of the .NET Core SDK version are locked to the .NET Core Runtime it released with. SDK の各バージョンでは、このランタイムまたはより低いバージョンに対するアプリケーションを作成できます。Each version of the SDK can create applications for this runtime or any lower version.

SDK バージョン番号の 3 番目の位置には、マイナー番号とパッチ番号の両方が示されます。The third position of the SDK version number communicates both the minor and patch number. マイナー バージョンには 100 が乗算されます。The minor version is multiplied by 100. マイナー バージョン 1、パッチ バージョン 2 の場合は、102 と表現されます。Minor version 1, patch version 2 would be represented as 102. 最後の 2 桁はパッチの番号を示しています。The final two digits represent the patch number. たとえば、.NET Core 2.2 のリリースの場合、次の表のようなリリースが作成される可能性があります。For example, the release of .NET Core 2.2 may create releases like the following table:

変更Change .NET Core ランタイム.NET Core Runtime .NET Core SDK (*).NET Core SDK (*)
初期リリースInitial release 2.2.02.2.0 2.2.1002.2.100
SDK パッチSDK Patch 2.2.02.2.0 2.2.1012.2.101
ランタイムおよび SDK パッチRuntime and SDK Patch 2.2.12.2.1 2.2.1022.2.102
SDK 機能変更SDK Feature change 2.2.12.2.1 2.2.2002.2.200

(*) 上記の表では、今後リリースされる 2.2 .NET Core Runtime が例として使用されています。 .NET Core 2.1 に対する最初の SDK が 2.1.300 であることが、履歴アーティファクトで示されていたからです。(*) This chart uses a future 2.2 .NET Core Runtime as the example because a historic artifact meant the first SDK for .NET Core 2.1 is 2.1.300. 詳細については、「.NET Core のバージョンの選択」を参照してください。For more information, See the .NET Core version selection.

注:NOTES:

  • SDK において、ランタイムの機能更新プログラムの前に 10 の機能更新プログラムがある場合、バージョン番号は 1000 シリーズに展開され、番号は 2.2.1000 のようになります。これは 2.2.900 に続く機能リリースを示しています。If the SDK has 10 feature updates before a runtime feature update, version numbers roll into the 1000 series with numbers like 2.2.1000 as the feature release following 2.2.900. このような状況が発生することは想定されていません。This situation isn't expected to occur.
  • 機能リリースなしで 99 のパッチ リリースは、発生しません。99 patch releases without a feature release won't occur. リリースがこの数に近づくと、機能リリースが強制的に適用されます。If a release approaches this number, it forces a feature release.

詳細については、dotnet/designs リポジトリにある初期の提案を参照してください。You can see more details in the initial proposal at the dotnet/designs repository.

セマンティック バージョン管理Semantic versioning

.NET Core ランタイムは、セマンティック バージョニング (SemVer) にほぼ準拠しています。MAJOR.MINOR.PATCH バージョン管理の使用が採用され、バージョン番号のさまざまな部分を使用して変更の程度と種類が記述されています。The .NET Core Runtime roughly adheres to 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]

省略可能な PRERELEASEBUILDNUMBER の部分はサポートされるリリースに含まれることはなく、ソース ターゲットからローカルでビルドされた夜間のビルドおよびサポートされていないプレビュー リリースにのみ存在します。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.

ランタイム バージョン番号の変更を理解するUnderstand runtime version number changes

MAJOR は次のときに増分されます。MAJOR is incremented when:

  • 製品に重大な変更が加えられた。または製品の方向性が新しくなった。Significant changes occur to the product, or a new product direction.
  • 互換性に影響する変更が行われた。Breaking changes were taken. 互換性に影響する変更の受け入れには大きな制約があります。There's a high bar to accepting breaking changes.
  • 古いバージョンがサポート対象から除外された。An old version is no longer supported.
  • 既存の依存関係の新しい MAJOR バージョンが採用された。A newer MAJOR version of an existing dependency is adopted.

MINOR は次のときに増分されます。MINOR is incremented when:

  • パブリック API アクセス領域が追加された。Public API surface area is added.
  • 新しい動作が追加された。A new behavior is added.
  • 既存の依存関係の新しい MINOR バージョンが採用された。A newer MINOR version of an existing dependency is adopted.
  • 新しい依存関係が導入された。A new dependency is introduced.

PATCH は次のときに増分されます。PATCH is incremented when:

  • バグの修正が行われた。Bug fixes are made.
  • より新しいプラットフォームのサポートが追加された。Support for a newer platform is added.
  • 既存の依存関係の新しい PATCH バージョンが採用された。A newer PATCH version of an existing dependency is adopted.
  • 前のケースのいずれかに一致しない他の変更。Any other change doesn't fit one of the previous cases.

複数の変更が存在する場合、個々の変更によって影響を受ける最高位置の要素が増分され、それに続く要素はゼロにリセットされます。When there are multiple changes, the highest element affected by individual changes is incremented, and the following ones are reset to zero. たとえば、MAJOR が増分され、MINORPATCH はゼロにリセットされます。For example, when MAJOR is incremented, MINOR and PATCH are reset to zero. MINOR が増分されるときには、PATCH はゼロにリセットされますが、MAJOR は変更されません。When MINOR is incremented, PATCH is reset to zero while MAJOR is left untouched.

ファイル名に含まれるバージョン番号Version numbers in file names

.NET Core でダウンロードされるファイルには、バージョンが伴います (たとえば、dotnet-sdk-2.1.300-win10-x64.exe のように)。The files downloaded for .NET Core carry the version, for example, dotnet-sdk-2.1.300-win10-x64.exe.

プレビュー バージョンPreview versions

プレビュー バージョンには、-preview[number]-([build]|"final") がバージョンに追加されます。Preview versions have a -preview[number]-([build]|"final") appended to the version. たとえば、2.0.0-preview1-final のようにします。For example, 2.0.0-preview1-final.

サービスのバージョンServicing versions

リリースされると、通常はリリース ブランチが毎日のビルドの生成を停止し、代わりにサービスのビルドの生成を開始します。After a release goes out, the release branches generally stop producing daily builds and instead start producing servicing builds. サービスのバージョンには、-servicing-[number] がバージョンに追加されます。Servicing versions have a -servicing-[number] appended to the version. たとえば、2.0.1-servicing-006924 のようにします。For example, 2.0.1-servicing-006924.

.NET Standard との関係Relationship to .NET Standard versions

.NET Standard は、.NET 参照アセンブリで構成されています。.NET Standard consists of a .NET reference assembly. 各プラットフォームに固有の複数の実装があります。There are multiple implementations specific to each platform. 参照アセンブリには、指定された .NET Standard バージョンの一部である .NET API の定義が含まれています。The reference assembly contains the definition of .NET APIs which are part of a given .NET Standard version. 各実装では、特定のプラットフォームに対する .NET Standard コントラクトが満たされます。Each implementation fulfills the .NET Standard contract on the specific platform. .NET Standard の詳細については、.NET ガイド内の .NET Standard に関する記事を参照してください。You can learn more about .NET Standard in the article on .NET Standard in the .NET Guide.

.NET Standard 参照アセンブリでは、MAJOR.MINOR バージョン管理スキームが使用されます。The .NET Standard reference assembly uses a MAJOR.MINOR versioning scheme. .NET Standard の場合、PATCH レベルは有用ではありません。 .NET Standard では、API 仕様しか公開されず (実装は対象外)、定義上、API に対する変更はいずれも機能セット内の変更を示すものであり、MINOR バージョンとなるためです。PATCH level isn't useful for .NET Standard because it exposes only an API specification (no implementation) and by definition any change to the API would represent a change in the feature set, and thus a new MINOR version.

各プラットフォーム上の実装の場合は、通常、プラットフォーム リリースの一部として更新されるので、そのプラットフォーム上で .NET Standard を使用しているプログラマには明らかにされません。The implementations on each platform may be updated, typically as part of the platform release, and thus not evident to the programmers using .NET Standard on that platform.

.NET Core の各バージョンでは、.NET Standard のバージョンが実装されます。Each version of .NET Core implements a version of .NET Standard. .NET Standard のバージョンを実装すると、以前のバージョンの .NET Standard のサポートが含まれます。Implementing a version of .NET Standard implies support for previous versions of .NET Standard. .NET Standard と .NET Core のバージョンは独立しています。.NET Standard and .NET Core version independently. .NET Core 2.0 によって .NET Standard 2.0 が実装されるのは偶然です。It's a coincidence that .NET Core 2.0 implements .NET Standard 2.0. .NET core 2.1 では .NET Standard 2.0 も実装されます。.NET Core 2.1 also implements .NET Standard 2.0. .NET Core では、.NET Standard の将来のバージョンについても、リリースされた場合はサポートされます。.NET Core will support future versions of .NET Standard as they become available.

.NET Core.NET Core .NET Standard.NET Standard
11.0 最大 1.6up to 1.6
2.02.0 最大 2.0up to 2.0
2.12.1 最大 2.0up to 2.0
2.22.2 最大 2.0up to 2.0
3.03.0 最大 2.1up to 2.1

関連項目See also