.NETアセンブリに一方のバージョン管理スタイルをもう一方のバージョン管理スタイルよりも使用する理由はありますか????
味以外にどちらのスタイルを使うことにもメリット/デメリットがあるか知りたいです。
.NETアセンブリに一方のバージョン管理スタイルをもう一方のバージョン管理スタイルよりも使用する理由はありますか????
味以外にどちらのスタイルを使うことにもメリット/デメリットがあるか知りたいです。
時間の利点は、バージョン番号の増加とタイムスタンプのエンコードの両方を取得できることです。
より伝統的な数字を使用する利点は、人々が理解しやすいことです。たとえば、「v2.1」が何を意味するかはおおよそわかっています。
一般的には、追加された情報が役立つため、時間を使用することをお勧めします。他の数字の利点はマーケティングのためだけであり、そのためにはとにかくそれを行うことができます.
たとえば、「v2.1.20090214. これで、major.minor セクションにマーケティングがあり、"build" セクションにユーティリティがあります。
major.minor.revision スキームを使用する利点はセマンティクスです。これらの各数値を更新する方法があります。
メジャー番号の変更は、新しいバージョンが古いバージョンと互換性がなく、以前のバージョンに依存するものを新しいパッケージにアップグレードするためにコードを変更する必要があることを意味します。
マイナー番号の変更は、新しいバージョンが以前のバージョンと下位互換性があることを意味しますが、以前のバージョンよりも大幅に機能が強化されています。
リビジョン番号は、バグ修正がビルドに適用されるたびに更新され、互換性の変更や新しい機能の導入は行われません。
したがって、依存関係を指定する際に、foo-1.0.0 から foo-1.99.999 に依存していると言え、アプリケーションを壊すようなパッケージのアップグレードで終わらないので安心できます。
より高いマイナー バージョンの依存関係 (たとえば、foo-1.4.22) から始めた場合は、依存関係を foo-1.4.22 - foo-1.99.999 と指定して、古いバージョンをインストールしないようにする必要があります。 1.4.x よりも、一部の機能/拡張機能が欠落している可能性があります。
I just leave the AssemblyVersion at "1.0.*" and remove any AssemblyFileVersion.
I can then increment the Major and Minor version numbers as seems appropriate and let the default DateTime base build and revision be automatically set.
Unless you have alternative build tools controling the build and revision number according to some other scheme I can see no real advantage to setting them manually.
時刻/日付を使用すると、もう1つ(ここの他の回答ですでに言及されているものとは別に)欠点があります。
開発チームが異なるタイム ゾーンに分散している場合、1 時間離れてビルドされた 2 つのバージョンのうち、どちらが新しいバージョンであるかを確認することはできません。タイムゾーンもバージョン管理するか、日付/時刻を強制的にGMTにする場合を除きます。
I use some build scripts that update my revision based on the SVN revision. That makes it trivial to track a dll back to the source code that created it.
Time is trickier; you have to start looking in the history pane - where-as most source control tools have a "get revision " facility.
日付ベースのバージョン番号付けの欠点の 1 つは、古いソフトウェアに対する否定的な認識です。
ただし、プロジェクトに非常によく適合するため、とにかく使用します。
なぜ選ぶのですか?Major.Minor.YYMMDD.Revision などの形式を使用して、両方の長所を活かすことができます。
編集 コメントで指摘されているように、各フィールドの範囲が制限されることがあります。その場合、Major.Minor.YMMDD.Revision を使用できます。
少なくとも 10 年ごとにマイナー バージョンを変更していただければ幸いです。