[word document] Microsoft - 配布時の変更管理
.NETでアプリケーションを組む時は、AssemblyInfo.cs内に(アセンブリの)バージョン情報を記述する。
[assembly: AssemblyVersion("1.2.3456.7")]
4つの数値でバージョン番号を記述して、これらは左からそれぞれ「メジャーバージョン(1)」「マイナーバージョン(2)」「ビルド番号(3456)」「リビジョン(7)」って名前がついてる。
メジャーバージョンとマイナーバージョンはいいとして、自分はビルド番号とリビジョンの違いがよく分からなくて悩んでた。「ビルド番号がビルド毎にカウントアップされるとしたら、リビジョンはどのタイミングでアップするんだろ?」みたいな。
しばらく前から時々思い出しては検索をかけてたんだけど、用語の表面的な紹介だけなら幾らでも引っかかるのに、番号付けの基準の説明はどうしても見つからない。以前ネットか専門書かどこかで見た覚えだけはあるんだけど、「これほど見つからないならあの時流さずにちゃんと読んどきゃ良かった」なんて思いつつ、後悔してても仕方ない。ひたすら探すべしw
で、今やっと一つだけ見つることができた。リンク先のWordファイルから一部引用。
『・バージョン番号
アセンブリは Assembly クラスの AssemblyVersion 属性を使ってどのようにバージョンを宣言すべきかについて前に説明しました。更新された共有アセンブリを配布するときは、4 つの部分(major.minor.build.revision)で構成されるバージョン番号を必ず更新してください。AssemblyVersion 属性を “1.0.*” に設定すると、.NET はビルド番号とリビジョン番号を自動的にインクリメントしますが、開発者は、それが適当であれば、マイナー バージョン番号とメジャー バージョン番号を手作業で更新する必要があります。
ビルド番号の変更はそのリビジョンがバグ修正のための必須のアップグレードであり、必ずインストールすべきことを意味します。これらのいわゆるクイック フィックス エンジニアリング (QFE) のバグ修正版は前のバージョンと互換性を保つ必要があります。同様に、リビジョン番号の変更は、小さな変更のみがなされ、新バージョンは依然として後方互換性を保っていることを意味します。マイナー バージョン番号の変更は、かなりの変更がなされたが、可能なかぎり後方互換性が保たれたことを意味します。マイナー バージョンには以前のバージョンに無かった機能を含めることができますが、旧い機能は改訂によって影響を受けてはなりません。メジャー バージョン番号の変更は、新バージョンが以前のバージョンと大きく異なり、後方互換性が失われている可能性が高いことを意味します』 (一部、明らかな誤りと思われる部分を訂正)
なるほどなるほど、よく分かりましたw
でもこの説明もMSDNのヘルプのどこかに書かれてて良さそうなもんだけどなぁ。
なんで見つからないんだろ。自分の探し方が下手なんだろうなw
ま、ここに書いてあることは理解できたからいいとして、読み終わってもう一つ疑問が浮かんできた。
ビルド番号ってメジャー/マイナー番号と比較して大きな数値になってるのをよく見るから、自分はメジャー/マイナーの値に関係なく(カウンターリセットせず)ビルド番号だけは通算でカウントアップしてるのかなって勝手に想像してた。でも、やっぱりこれはマイナーバージョンアップでリセットするものなんだろうか?それにしては数値が大きいものが多すぎるように思うんだけど、ここら辺どうなってんだろ、好きにすればいいのかな。。。
てか、普通に考えるとやっぱリセットするのが順当というか、そうしないと変だよね^^;