.NET のバージョン管理の方法の概要

.NET ランタイムと .NET SDK では、新しい機能が追加される頻度が異なります。 一般には、ランタイムよりも SDK の方がより頻繁に更新されます。 この記事では、ランタイムと SDK のバージョン番号について説明します。

バージョン管理の詳細

.NET ランタイムでは、セマンティック バージョニングに従い、メジャー、マイナーおよびパッチを使用してバージョン管理を行っています。

.NET SDK は、セマンティックバージョニングには従っていません。 .NET SDK の方が速くリリースされ、そのバージョン番号では、それと連携しているランタイムとその SDK 自体のマイナーおよびパッチ リリースの両方が示されている必要があります。

.NET SDK のバージョン番号の 1 番目と 2 番目の位置は、一緒にリリースされる .NET ランタイム バージョンと固定されています。 SDK の各バージョンでは、このランタイムまたはより低いバージョンに対するアプリケーションを作成できます。

SDK バージョン番号の 3 番目の位置には、マイナー番号とパッチ番号の両方が示されます。 マイナー バージョンには 100 が乗算されます。 最後の 2 桁はパッチの番号を示しています。 マイナー バージョン 1、パッチ バージョン 2 の場合は、102 と表現されます。 たとえば、ランタイムと SDK のバージョン番号の順番としては、次が可能です。

Change .NET ランタイム .NET SDK (*)
初期リリース 2.2.0 2.2.100
SDK パッチ 2.2.0 2.2.101
ランタイムおよび SDK パッチ 2.2.1 2.2.102
SDK 機能変更 2.2.1 2.2.200

注:

  • SDK において、ランタイムの機能更新プログラムの前に 10 の機能更新プログラムがある場合、バージョン番号は 1000 シリーズに展開され、番号は 2.2.1000 のようになります。これは 2.2.900 に続く機能リリースを示しています。 このような状況が発生することは想定されていません。
  • 機能リリースなしで 99 のパッチ リリースは、発生しません。 リリースがこの数に近づくと、機能リリースが強制的に適用されます。

詳細については、dotnet/designs リポジトリにある初期の提案を参照してください。

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

.NET ランタイム は、セマンティック バージョニング (SemVer) にほぼ準拠しています。MAJOR.MINOR.PATCH バージョン管理の使用が採用され、バージョン番号のさまざまな部分を使用してどの程度のどのような種類の変更があったかが示されています。

MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]

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

ランタイム バージョン番号の変更を理解する

MAJOR は次のときに増分されます。

  • 製品に重大な変更が加えられた。または製品の方向性が新しくなった。
  • 互換性に影響する変更が行われた。 互換性に影響する変更の受け入れには大きな制約があります。
  • 古いバージョンがサポート対象から除外された。
  • 既存の依存関係の新しい MAJOR バージョンが採用された。

MINOR は次のときに増分されます。

  • パブリック API アクセス領域が追加された。
  • 新しい動作が追加された。
  • 既存の依存関係の新しい MINOR バージョンが採用された。
  • 新しい依存関係が導入された。

PATCH は次のときに増分されます。

  • バグの修正が行われた。
  • より新しいプラットフォームのサポートが追加された。
  • 既存の依存関係の新しい PATCH バージョンが採用された。
  • 前のケースのいずれかに一致しない他の変更。

複数の変更が存在する場合、個々の変更によって影響を受ける最高位置の要素が増分され、それに続く要素はゼロにリセットされます。 たとえば、MAJOR が増分され、MINORPATCH はゼロにリセットされます。 MINOR が増分されるときには、PATCH はゼロにリセットされますが、MAJOR は変更されません。

ファイル名に含まれるバージョン番号

.NET 用にダウンロードされるファイルは、たとえば、dotnet-sdk-2.1.300-win10-x64.exe のようにバージョンを含んでいます。

プレビュー バージョン

プレビュー バージョンには、-preview[number]-([build]|"final") がバージョン番号に追加されます。 たとえば、2.0.0-preview1-final のようにします。

サービスのバージョン

リリースされると、通常はリリース ブランチが毎日のビルドの生成を停止し、代わりにサービスのビルドの生成を開始します。 サービスのバージョンには、-servicing-[number] がバージョンに追加されます。 たとえば、2.0.1-servicing-006924 のようにします。

.NET Standard との関係

.NET Standard は、.NET 参照アセンブリで構成されています。 各プラットフォームに固有の複数の実装があります。 参照アセンブリには、指定された .NET Standard バージョンの一部である .NET API の定義が含まれています。 各実装では、特定のプラットフォームに対する .NET Standard コントラクトが満たされます。

.NET Standard 参照アセンブリでは、MAJOR.MINOR バージョン管理スキームが使用されます。 .NET Standard の場合、PATCH レベルは有用ではありません。 .NET Standard では、API 仕様しか公開されず (実装は対象外)、定義上、API に対する変更はいずれも機能セット内の変更を示すものであり、MINOR バージョンとなるためです。

各プラットフォーム上の実装の場合は、通常、プラットフォーム リリースの一部として更新されるので、そのプラットフォーム上で .NET Standard を使用しているプログラマには明らかにされません。

詳細については、「.NET Standard」をご覧ください。

関連項目