2009-05-20 6 views
2

System.Assembly.Loadを使用するか、System.AppDomain.CurrentDomain.CreateInstanceFromAndUnwrapを使用してアセンブリをAppDomainに直接ロードする方が良いですか?私は、同じプロセスで実行されている同じアセンブリの異なるバージョンを呼び出すことに特に関心があります。 CreateInstanceFromAndUnwrapではアセンブリに[serializable]属性が必要ですが、それはなぜですか?.NETで異なるアセンブリバージョンを動的にロードする

EDIT:ロードしようとしているアセンブリは、呼び出し元と同じ場所にありません。

答えて

0

私は同じ場所ではないので、ファイルシステム上の他の場所を意味すると思いますが、そうでない場合は教えてください。

一般的な低レベルアセンブリローダーであるため、System.Assembly.Loadを使用する方が優れています。

また、別のバージョンを読み込みたいとします。これを行うには、セカンダリAppDomainをセットアップしてアセンブリをロードし、完了したらそのAppDomainをアンロードし、新しいアセンブリバージョン用の新しいAppDomainを作成する必要があります。 AppDomain。

CreateInstanceFromAndUnwrapは、何らかの形で「送信」されたコードを読み込むためのものです。そのため、動作するものは直列化可能でなければなりません。

+0

あなたのアセンブリで名前にバージョン番号が残っていれば、以前のものをアンロードする必要はありません...ロードするアセンブリの数によっては、RAMの使用量は比例して増加します... – user79755

+0

I同じappdomainに同じアセンブリの2つのバージョンをロードすることができると思った...私はそれを試してみる必要があったとは言いません。 – JasonRShaver

+0

[this post](http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/ff1a1d47-c3b8-422f-a373-6fe4b90e36d8)によると、 "あなたはできるはずですアセンブリに強い名前**(名前、バージョン、カルチャ、公開キー)がある場合、**同じAppDomainに同じアセンブリの2つの異なるバージョンを読み込むことができます。しかし厳密なドキュメントではありません。 – bacar

関連する問題