0

同じプロセス内で同じdllの2つの異なるバージョンをロードしたいと思います。同時に、GACにそれらを配置することは避けたいと思います。

何か案は?

ありがとう、クリコール

4

2 に答える 2

0

Activator.CreateInstance。例については、msdnを確認してください。

于 2010-01-08T16:31:18.693 に答える
0

はい、何らかの方法でアセンブリを手動でロードする必要があるようです。

私が見つけた解決策の 1 つは、appDomain の AssemblyResolve イベントをサブスクライブすることでした。このイベントは、アセンブリが見つからない場合に発生し、手動で提供できるようにします。

  1. このようなイベントハンドラーを再登録します

AppDomain.CurrentDomain.AssemblyResolve += MyResolveEventHandler;

static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) { return Assembly.LoadFrom(@"OldAsm\Asm.dll"); }

  1. 特定のコードを使用するコードに到達すると、.NET Framework はアセンブリを読み込もうとし、クラッシュしてハンドラー (MyResolveEventHandler) を呼び出します。

コードを記述したり、GAC に何も入れたりせずに、適切な参照を解決する方法を探し続けます。誰かが方法を見つけたら、投稿してください。

ありがとう

于 2010-01-10T20:03:46.577 に答える