はじめに
今回はSemantic Versioningを簡単に扱えるようになるMS製ライブラリのNuGet.Versioning
を紹介したいと思います。
www.nuget.org
概要
Semantic Versioning
をプログラムで扱うためにはNuGet.Versioning
を推奨されています。
NuGet パッケージのバージョンをプログラムで使用する場合は、パッケージの NuGet.Versioning を使用することを強くお勧めします。 静的メソッド NuGetVersion.Parse(string) はバージョン文字列を解析するために使用でき、VersionComparer は NuGetVersion インスタンスの並べ替えに使用できます。
公式ドキュメントによるとNuGetで用いられるNuGetVersion
は、一般的なSemantic Versioning
と3つほど相違点があるみたいです。
- 4 番目のバージョン セグメント (
Revision
) をサポート - メジャー セグメントのみを定義が必須
- プレリリース コンポーネントに対して、大文字と小文字を区別しない
それを念頭に置きつつ、利用する・しないを決めてください。
使い方
利用方法は非常にシンプルです。
// Semantic Versioning例 // 1.0.1 // 1.0.1-zzz // 1.0.1-rc.10 // 1.0.1-rc.2 // 1.0.1-open // 1.0.1-beta // 1.0.1-alpha2 // 1.0.1-alpha10 // 1.0.1-aaa if (NuGetVersion.TryParse("1.2.3", out NuGetVersion? version)) { // 1 Console.WriteLine(version.Major); // 2 Console.WriteLine(version.Minor); // 3 Console.WriteLine(version.Patch); // 実は4番目のバージョン セグメント (Revision) をサポートされている // Major.Minor.Patch.Revision // 0 Console.WriteLine(version.Revision); }
TryParse
でなく単純なParse
もあり、パースできない場合はArgumentException
を投げます。
// System.ArgumentException: 'abagaggea' is not a valid version string. (Parameter 'value') NuGetVersion version = NuGetVersion.Parse("abagaggea");