0

簡単な例。

アプリケーション A には、全体で使用されるクラス ライブラリ C があります。

アプリケーション A は MEF を使用して、プラグイン ディレクトリからプラグイン モジュール P1 および P2 を検出してロードします。プラグインごとに 1 つのアセンブリ。

P1 と P2 はどちらも C (クラス ライブラリ) に依存しています。

ビルド プロセスでは、P1 で使用される C のバージョンが A で参照されるバージョンと同じであることを確認します。

同じアセンブリの複数のコピーが一度に読み込まれることはないと思いますか? デフォルトでは、プラグイン ディレクトリと A のアプリケーション ディレクトリに C のコピーが作成されます。

4

1 に答える 1

1

アセンブリが重複しないようにするためCopy Localに、プラグイン プロジェクトのコントラクト (C) ライブラリのプロパティを false に変更すると、ビルド時に出力ディレクトリにコピーされなくなります。

Fusionローダーのルールのおかげで、CLRは同じアセンブリを2回ロードしないので、問題ないと思います。最初は、ターゲットアセンブリがAppDomain. Assembly.LoadFromただし、アセンブリがディスク上の異なる場所にあることが実際にわかっている場合、コードを使用すると例外が発生する可能性があるため、注意が必要です。

于 2012-08-31T07:53:06.167 に答える