プレリリース パッケージのビルドBuilding pre-release packages

更新したパッケージを新しいバージョン番号でリリースすると、NuGet はそれを "最新の安定版リリース" として見なし、たとえば、Visual Studio 内のパッケージ マネージャー UI で下記のように表示されます。Whenever you release an updated package with a new version number, NuGet considers that one as the "latest stable release" as shown, for example in the Package Manager UI within Visual Studio:

最新の安定版リリースを示すパッケージ マネージャー UI

安定版リリースとは、実稼働環境で使用するだけの信頼性があると見なされるリリースです。A stable release is one that's considered reliable enough to be used in production. 最新の安定版リリースは、パッケージ更新またはパッケージ復元でインストールされるリリースでもあります (「Reinstalling and updating packages」 (パッケージの再インストールと更新) の説明にある制約に左右されます)。The latest stable release is also the one that will be installed as a package update or during package restore (subject to constraints as described in Reinstalling and updating packages).

ソフトウェア リリース ライフサイクルをサポートするために、NuGet 1.6 以降では、プレリリース パッケージを配信できます。バージョン番号には、-alpha-beta-rc のようなセマンティック バージョン管理サフィックスが含まれます。To support the software release lifecycle, NuGet 1.6 and later allows for the distribution of pre-release packages, where the version number includes a semantic versioning suffix such as -alpha, -beta, or -rc. 詳細については、「Package versioning」(パッケージのバージョン管理) を参照してください。For more information, see Package versioning.

次の方法のいずれかを使って、このようなバージョンを指定できます。You can specify such versions using one of the following ways:

  • プロジェクトで PackageReference を使う場合: .csproj ファイルの PackageVersion 要素にセマンティック バージョン サフィックスを含めます。If your project uses PackageReference: include the semantic version suffix in the .csproj file's PackageVersion element:

    <PropertyGroup>
        <PackageVersion>1.0.1-alpha</PackageVersion>
    </PropertyGroup>
    
  • プロジェクトに packages.config ファイルがある場合: .nuspec ファイルの version 要素にセマンティック バージョン サフィックスを含めます。If your project has a packages.config file: include the semantic version suffix in the .nuspec file's version element:

    <version>1.0.1-alpha</version>
    

安定版バージョンをリリースする用意ができたら、サフィックスを削除します。このパッケージはあらゆるプレリリース版に優先します。When you're ready to release a stable version, just remove the suffix and the package takes precedence over any pre-release versions. 繰り返しになりますが、「Package versioning」(パッケージのバージョン管理) を参照してください。Again, see Package versioning.

プレリリース パッケージのインストールと更新Installing and updating pre-release packages

既定で、NuGet ではパッケージの使用時にプレリリース版を含めませんが、この動作は次のように変更できます。By default, NuGet does not include pre-release versions when working with packages, but you can change this behavior as follows:

  • Visual Studio のパッケージ マネージャー UI: [NuGet パッケージの管理] UI で、[プレリリースを含める] ボックスを選択します。Package Manager UI in Visual Studio: In the Manage NuGet Packages UI, check the Include prerelease box:

    Visual Studio の [プレリリースを含める] チェックボックス

    このボックスをオンまたはオフにするとパッケージ マネージャー UI とインストールできるバージョンの一覧が更新されます。Setting or clearing this box will refresh the Package Manager UI and the list of available versions you can install.

  • パッケージ マネージャー コンソール: Find-PackageGet-PackageInstall-PackageSync-PackageUpdate-Package コマンドで -IncludePrerelease スイッチを使用します。Package Manager Console: Use the -IncludePrerelease switch with the Find-Package, Get-Package, Install-Package, Sync-Package, and Update-Package commands. PowerShell Reference」 (PowerShell リファレンス) を参照してください。Refer to the PowerShell Reference.

  • NuGet CLI: installupdatedeletemirror コマンドで -prerelease スイッチを使用します。NuGet CLI: Use the -prerelease switch with the install, update, delete, and mirror commands. NuGet CLI reference」(NuGet CLI リファレンス) を参照してください。Refer to the NuGet CLI reference

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

Semantic Versioning or SemVer convention」 (セマンティック バージョニングまたは SemVer 規則) では、バージョン番号の文字列を活用し、基礎となっているコードの意味を伝える方法が説明されています。The Semantic Versioning or SemVer convention describes how to utilize strings in version numbers to convey the meaning of the underlying code.

この規則では、各バージョンが 3 つの部分、Major.Minor.Patch から構成されています。それぞれ次のような意味があります。In this convention, each version has three parts, Major.Minor.Patch, with the following meaning:

  • Major:互換性に影響する変更Major: Breaking changes
  • Minor: 新機能、ただし下位互換性ありMinor: New features, but backwards compatible
  • Patch: 下位互換性のバグ修正のみPatch: Backwards compatible bug fixes only

プレリリース版には、パッチ番号の後にハイフンと文字列が付きます。Pre-release versions are then denoted by appending a hyphen and a string after the patch number. 技術的に言えば、ハイフンの後にはあらゆる文字列を使用できます。それで NuGet はパッケージをプレリリースとして扱います。Technically speaking, you can use any string after the hyphen and NuGet will treat the package as pre-release. NuGet は該当 UI に完全なバージョン番号を表示します。利用者はその意味を自分で解釈します。NuGet then displays the full version number in the applicable UI, leaving consumers to interpret the meaning for themselves.

それを踏まえた上で、次のような認められている命名規則に従うことが一般的に推奨されます。With this in mind, it's generally good to follow recognized naming conventions such as the following:

  • -alpha: アルファ リリース。一般的に、進行中の製品または実験に使用されます。-alpha: Alpha release, typically used for work-in-progress and experimentation
  • -beta: ベータ リリース。一般的に、次に計画されているリリースの機能をすべて利用できますが、既知のバグが含まれている可能性があります。-beta: Beta release, typically one that is feature complete for the next planned release, but may contain known bugs.
  • -rc: リリース候補。一般的に、重大なバグが現れない限り、最終版 (安定版) となる可能性があるリリース。-rc: Release candidate, typically a release that's potentially final (stable) unless significant bugs emerge.

注意

NuGet 4.3.0 以降は、1.0.1-build.23 のように、ドット表記のプレリリース番号をサポートするセマンティック バージョニング v2.0.0 をサポートしています。NuGet 4.3.0+ supports Semantic Versioning v2.0.0, which supports pre-release numbers with dot notation, as in 1.0.1-build.23. ドット表記は、バージョン 4.3.0 より前の NuGet ではサポートされていません。Dot notation is not supported with NuGet versions before 4.3.0. 以前のバージョンの NuGet では、1.0.1-build23 のような形式を使用できましたが、これは常にプレリリース版と見なされていました。In earlier versions of NuGet, you could use a form like 1.0.1-build23 but this was always considered a pre-release version.

ただし、どのようなサフィックスを使用する場合でも、NuGet はアルファベットの逆順で優先順序を与えます。Whatever suffixes you use, however, NuGet will give them precedence in reverse alphabetical order:

1.0.1
1.0.1-zzz
1.0.1-rc
1.0.1-open
1.0.1-beta12
1.0.1-beta05
1.0.1-beta
1.0.1-alpha2
1.0.1-alpha

このように、サフィックスのないバージョンは常にプレリリース版に優先します。As shown, the version without any suffix will always take precedence over pre-release versions. 数値のサフィックスとプレリリース タグを使用するとき、番号が 2 桁 (以上) になる場合、beta01 や beta05 のように、先行ゼロを使用してください。それにより、番号が大きくなっても正しく並べ替えられます。Note also that if you use numerical suffixes with pre-release tags that might use double-digit numbers (or more), use leading zeroes as in beta01 and beta05 to ensure that they sort correctly when the numbers get larger.