コンウェイとピーターの狭間で

ずっと放置しつつQiitaに移ったりしていましたが、スマートホームについて書いていこうかと

セマンティックバージョニングと.NETクラス

セマンティックバージョニングって知っていますか?

私も、Chocolateyのパッケージのつくり方を調べていて出てきて知ったのですが、 バージョン番号の付け方をある程度標準化しようという取り決めのようです。

詳しくはこちら

Semantic Versioning 2.0.0

Semantic Versioning 2.0.0 (日本語訳)

バージョン番号ってどのタイミングでどう上げるか、ベータ版の表現方法など いろいろなやり方がありますが、これからはこれに従っていこうと思います。

ただ、Windowsのファイルバージョンや.NETアセンブリのバージョンは1.0.0.0といった4桁表記なんですよね。

セマンティックバージョニングが3桁という違いがあってもこれである程度表現できますが、 ベータ版表記やメタデータ表記ができません。 また、.NETのVersion型のようにセマンティックバージョニングのルールで比較することもできません。

ということで、作っちゃおうと思ったのですが、少しググってみたら見つかりました。

Semantic Versioning in .NET - The Imaginary Road

こちらはテストコードを見る限り、少し古いようです。 ビルドメタデータを比較に使っているようで、セマンティックバージョニングv2.0.0-rc.2で 消えた仕様ですね。

もう1つ

ImaginaryRealities/CommonLibrary · GitHub

こちらはNugetで公開されているもので、同じ作者のようです。 こちらのほうが対応している仕様のバージョン新しく、ビルドメタデータの比較はなくなっています。

ライセンスはどちらもMITのようですね。 緩いライセンスですがライセンス表記が嫌なら、 仕様も明確で大した量もないので作っちゃっても良いような気がしますが。