プレリリース パッケージのビルド

更新したパッケージを新しいバージョン番号でリリースすると、NuGet はそれを "最新の安定版リリース" として見なし、たとえば、Visual Studio 内のパッケージ マネージャー UI で下記のように表示されます。

Package Manager UI showing the latest stable release

安定版リリースとは、実稼働環境で使用するだけの信頼性があると見なされるリリースです。 最新の安定版リリースは、パッケージ更新またはパッケージ復元でインストールされるリリースでもあります (「Reinstalling and updating packages」 (パッケージの再インストールと更新) の説明にある制約に左右されます)。

ソフトウェア リリース ライフサイクルをサポートするために、NuGet 1.6 以降では、プレリリース パッケージを配信できます。バージョン番号には、-alpha-beta-rc のようなセマンティック バージョン管理サフィックスが含まれます。 詳細については、「Package versioning」(パッケージのバージョン管理) を参照してください。

次の方法のいずれかを使って、このようなバージョンを指定できます。

  • プロジェクトで PackageReference を使う場合: .csproj ファイルの PackageVersion 要素にセマンティック バージョン サフィックスを含めます。

    <PropertyGroup>
        <PackageVersion>1.0.1-alpha</PackageVersion>
    </PropertyGroup>
    
  • プロジェクトに packages.config ファイルがある場合: .nuspec ファイルの version 要素にセマンティック バージョン サフィックスを含めます。

    <version>1.0.1-alpha</version>
    

安定版バージョンをリリースする用意ができたら、サフィックスを削除します。このパッケージはあらゆるプレリリース版に優先します。 繰り返しになりますが、「Package versioning」(パッケージのバージョン管理) を参照してください。

プレリリース パッケージのインストールと更新

既定で、NuGet ではパッケージの使用時にプレリリース版を含めませんが、この動作は次のように変更できます。

  • Visual Studio のパッケージ マネージャー UI: [NuGet パッケージの管理] UI で、[プレリリースを含める] ボックスを選択します。

    The Include prerelease checkbox in Visual Studio

    このボックスをオンまたはオフにするとパッケージ マネージャー UI とインストールできるバージョンの一覧が更新されます。

  • パッケージ マネージャー コンソール: Find-PackageGet-PackageInstall-PackageSync-PackageUpdate-Package コマンドで スイッチを使用します。 「PowerShell Reference」 (PowerShell リファレンス) を参照してください。

  • NuGet CLI: installupdatedeletemirror コマンドで -prerelease スイッチを使用します。 「NuGet CLI reference」(NuGet CLI リファレンス) を参照してください。

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

Semantic Versioning or SemVer convention」 (セマンティック バージョニングまたは SemVer 規則) では、バージョン番号の文字列を活用し、基礎となっているコードの意味を伝える方法が説明されています。

この規則では、各バージョンが 3 つの部分、Major.Minor.Patch から構成されています。それぞれ次のような意味があります。

  • Major: 互換性に影響する変更点
  • Minor: 新機能、ただし下位互換性あり
  • Patch: 下位互換性のバグ修正のみ

プレリリース版には、パッチ番号の後にハイフンと文字列が付きます。 技術的に言えば、ハイフンの後にはあらゆる文字列を使用できます。それで NuGet はパッケージをプレリリースとして扱います。 NuGet は該当 UI に完全なバージョン番号を表示します。利用者はその意味を自分で解釈します。

それを踏まえた上で、次のような認められている命名規則に従うことが一般的に推奨されます。

  • -alpha: アルファ リリース。一般的に、進行中の製品または実験に使用されます。
  • -beta: ベータ リリース。一般的に、次に計画されているリリースの機能をすべて利用できますが、既知のバグが含まれている可能性があります。
  • -rc: リリース候補。一般的に、重大なバグが現れない限り、最終版 (安定版) となる可能性があるリリース。

Note

NuGet 4.3.0 以降は、1.0.1-build.23 のように、ドット表記のプレリリース番号をサポートするセマンティック バージョニング v2.0.0 をサポートしています。 ドット表記は、バージョン 4.3.0 より前の NuGet ではサポートされていません。 以前のバージョンの NuGet では、1.0.1-build23 のような形式を使用できましたが、これは常にプレリリース版と見なされていました。

ただし、どのようなサフィックスを使用する場合でも、NuGet はアルファベットの逆順で優先順序を与えます。

1.0.1
1.0.1-zzz
1.0.1-rc
1.0.1-open
1.0.1-beta.12
1.0.1-beta.5
1.0.1-beta
1.0.1-alpha.2
1.0.1-alpha

このように、サフィックスのないバージョンは常にプレリリース版に優先します。

semver2 では、0 を前に付ける必要はありませんが、古いバージョンのスキーマでは付与されています。 プレリリース タグと共に数値のサフィックスを使用し、その数字が 2 桁 (以上) になる可能性がある場合、beta.01 や beta.05 のように、数字が大きくなっても確実に正しく並べ替えられるように、前に付けるゼロを使用してください。 この推奨事項は、古いバージョンのスキーマのみに適用されます。