.NETのsystem.versionがmajor.minor.build.revisionとして定義されるのはなぜですか?
-
29-09-2019 - |
質問
.NETのsystem.versionがmajor.minor.build.revisionとして定義されるのはなぜですか?ほとんどすべての人(私を含む)は、リビジョンが3位に属し、「ビルド」またはあなたがそれを「ビルド」するものは最後に属していることに同意しているようです。
Microsoftは、この偶然の方法で数字を使用しています。たとえば、3.5.3858.2、または名前自体がちょうど後ろにありますか?たとえば、Order Major.minor.build.revisionで独自のバージョンクラスを作成する場合、System.versionに変換するときに最後の2つのコンポーネントを交換することが適切ですか、それとも無視して名前をふりかけますか後方ですか?
解決
混乱は、ほとんどの人が「改訂」と考えるものが来ると思います マイクロソフトがすること:
建てる: ビルド番号の違いは、同じソースの再コンパイルを表します。これは、プロセッサ、プラットフォーム、またはコンパイラの変更により適切です。
リビジョン: 同じ名前、主要なバージョン、マイナーバージョンの数字を持つアセンブリは、完全に交換可能であることを目的としています。これは、以前にリリースされたアセンブリのセキュリティホールを修正するのに適しています。
おそらく彼らにとってはるかに一般的なセキュリティの修正角度は、「最もマイノア」が変化するにつれて、最後の場所にそれを持つためのまともな理由のようです。
他のヒント
私は少し遅れてパーティーに来ていることに気づきましたが、ビルドと改訂の順序が「間違っている」理由について私の2ペンスを共有したかったのです。彼らが中にいるのはそれほどではありません 間違い 注文しますが、彼らは入っていません どれか 注文。
アセンブリのバージョンは、それがそれになると、Major.minorです。前述から リンク, 、Microsoft氏は、「ビルドまたはリビジョン番号によってのみ異なるアセンブリの後続のバージョンは、以前のホットフィックス更新と見なされます。 バージョン。 [私の強調
建てる 同じソースの再コンパイルを表します。 リビジョン コードの変更を表しますが、同じ[Major.Minor]バージョンの他の改訂版と完全に交換可能なものです。しかし、どちらも他の人よりも優先されません。
だから、要約すると、それを考えないでください:
+ Major
|
+-+ Minor
|
+-+ Build
|
+-+ Revision
代わりに:
+ Major
|
+-+ Minor
|
+-+ Build
|
+-+ Revision
マイクロソフトは、この偶然の方法で数字を使用していますか?例:3.5.3858.2
たとえば、指定することにより、デフォルトさせた場合 [assembly: AssemblyVersion("1.1.*")]
, 、その後、毎日3番目の数字が増加し、4番目の数は真夜中から2秒で2秒で割っています(1日で複数のビルドがある場合は明確にします)。
ほとんどすべての人(私を含む)は、リビジョンが3位に属し、「ビルド」またはあなたがそれを「ビルド」するものは最後に属していることに同意しているようです。
Microsoftは、「Day」の同義語として「ビルド」を使用しているようです。おそらく、それは「毎日のビルド」のアイデアに関連しています。したがって、「リビジョン」は、(毎日)ビルドの別のバージョンです。
遅い答えですが、他の答えは少し拡張できると感じています。
「ビルド」と「リビジョン」という用語は、Microsoft用語です。 System.versionクラスは、それらをどのように割り当てるかを気にしません。
自分の用語に合わせて部品の順序を切り替えることに関しては、基本的に単語を完全に無視し、代わりにシステムを考慮する必要があると思います。 本当 定義:
解析して生成できる文字列形式:
major.minor[.build[.revision]]
これは、XYZWとしてフォーマットされているバージョンを所有することに慣れている場合は、この方法でバージョンクラスをインスタンス化する必要があることを意味します。
new Version(x, y, z, w)
他のパラメーターの順序は、parse()とtoString()が行うことと一致しません。 zとwを切り替えると、tostring()はxywzを出力します。
a バージョンの比較と並べ替え順序, 、バージョンは最初にメジャーによってソートされ、次にマイナーによってソートされ、次にビルドし、改訂します。私たちのほとんどが期待するように。つまり、1.2.5は1.2.3.7以下です。
したがって、バージョンの文字列を1.2.6.4としてスタイリングし、それを1.2.5.8より新しいと見なしたい場合は、バージョンコンストラクターのパーツの順序を切り替えないでください。
要するに、メジャー/マイナー/ビルド/リビジョンという言葉は、変化の量を考慮してどの数を増やすべきかについての手がかりを与えるかもしれませんが、用語はクラスの実際にどのように使用されるかにほとんど影響を与えません。フォーマットと並べ替えが重要です。