これが私が生きてきたものです-
DLL ファイルを何に使用する予定かによって異なります。それらを 2 つの主なグループに分類します。
行き止まりのアセンブリ。これらは、どこからも参照する予定のない EXE ファイルと DLL ファイルです。これらに弱い名前を付けて、リリースするバージョン番号がソース管理でタグ付けされていることを確認してください。そうすれば、いつでもロールバックできます。
参照アセンブリ。これらに厳密な名前を付けて、他のアセンブリによって参照される複数のバージョンを持つことができるようにします。完全な名前を使用してそれらを参照します (Assembly.Load)。その最新かつ最高のバージョンのコピーを、他のコードが参照できる場所に保管してください。
次に、参照をローカルにコピーするかどうかを選択できます。基本的に、トレードオフは次のようになります。リファレンスからパッチ/アップグレードを取り入れたいですか? 新しい機能を取得することにはプラスの価値がありますが、一方で、重大な変更が発生する可能性があります。ここでの決定は、ケースバイケースで行うべきだと思います。
Visual Studio での開発中は、既定で最新バージョンを使用してコンパイルしますが、一度コンパイルすると、参照アセンブリにはコンパイルに使用された特定のバージョンが必要になります。
最後に決定するのは、ローカルにコピーするかどうかです。基本的に、参照されたアセンブリを配置するメカニズムが既にある場合は、これを false に設定します。
大規模なリリース管理システムを計画している場合は、おそらくこれについてさらに多くのことを考え、注意を払う必要があります。私(小さな店 - 二人)にとって、これはうまくいきます。私たちは何が起こっているかを知っており、意味のないことをしなければならないことを抑制されているとは感じません。
ランタイムに達したら、必要なものを Assembly.Load してアプリケーション ドメインに入れます。その後、Assembly.GetType を使用して目的の型に到達できます。複数の読み込まれたアセンブリ (同じプロジェクトの複数のバージョンなど) に存在する型がある場合、AmbiguousMatchException例外が発生する可能性があります。これを解決するには、静的な Assembly.GetType メソッドではなく、アセンブリ変数のインスタンスから型を取得する必要があります。