。
最終的には、選択したバージョン管理の方法は、達成する必要のあるものと、それを維持するために割り当てる時間に依存します。 2つは直接関連しています。
バージョニングの主な2つの目標は、サイドバイサイド実行とトラッキングです。 サイドバイサイド(SxS)では、同じアプリケーション内で複数のバージョンの同じDLLを実行できます。アセンブリバージョン番号を変更しなければ、これは不可能です。 トラッキングは、顧客のマシンで実行されている正確なコードスナップショットを決定するだけです。 アセンブリバージョンを変更することでどちらも達成できますが、アセンブリバージョンを変更することにより、最初にを達成することができます。
多くの人が、すべてのDLL/EXEでバージョン番号を共有することをお勧めします。これは最も簡単な方法であるため、展開の柔軟性はほとんどありません。
例えば、コントラクト抽象化(具体的な型ではなくインターフェイス間でDLL間の依存関係を定義する)を使用している場合、アプリケーションを複数の「バージョン管理サイロ」に分割することができます。 例として、クライアントとサーバーがあります.3番目のアセンブリで定義されている場合、相互依存性はWCFと契約しています。 これらのバージョンが別々にバージョン化されている場合は、クライアントに影響を与えることなく、新しいバージョンのサーバーをリリースできます(同じ契約に準拠している限り)。およびその逆。
あなたが見るように、要求が増えるにつれてバージョニングの粒度を増やすことができますが、それは耳を傾けます。
あなたがやっていることは、何をしているのか、座って要件を計画してから、バージョン管理の境界線(契約によって分けることができるコンポーネント)をマッピングすることです。
この次はテスト部門の規模によって異なりますが、ファイルバージョンにビルド番号/日付が反映されているかどうかを確認することをおすすめします。 お客様のリリースごとにアセンブリバージョンを1つだけ増やしますが、ビルドから出てくるDLLのコレクションごとに異なるバージョンのファイルを用意する必要があります。これは、テスト中に問題が見つかった場合、これらのDLLを一意に識別できるようにすることで、DLLの起源を正確に特定することができなくなるからです。
これは、DLLがアプリケーションの不可欠な部分であるか、独自のプロジェクトであるかによって異なります。私は現在、他のプロジェクトで使用できるライブラリDLLを持つアプリケーションに取り組んでいます。ライブラリDLLには独自のアセンブリ情報があり、バージョン番号が使用されている他のすべてのプロジェクトのバージョン番号と一致するとは限りません。 –
@Robert Harvey、はい - もちろんです。 DLLがアプリケーションの不可欠な部分でない場合、共有されたassemblyinfoを使用することはできません。しかし、この特定の質問では、DLLはアプリケーションの一部であるようです。 – Illuminati