2010-12-27 26 views
2

Assembly.LoadFromがApplicationBaseとPrivateBinPathを使用しているのは私の印象です。また、Assembly.LoadFileは私の印象ではありません。なぜAssembly.LoadFromの代わりにAssembly.LoadFileを使用しますか?

なぜLoadFileを使いたいのですか?言い換えれば、私の理解が正しい場合、なぜ誰がApplicationBaseとPrivateBinPathを使用したくないのですか?

私はLoadFileを使用するいくつかの既存のコードを使用しています。なぜそうするのか分かりません。 LoadFileは明らかに同じディレクトリからの依存関係をロードしません。 LoadFromメソッドは依存関係を読み込みます(ドキュメントから:ロード元のコンテキスト...パス情報がコンテキストによって維持されているため、そのパスの依存関係を検出してロードできます)) LoadFromを使用してLoadFileを使用します。

LoadFromをLoadFromに置き換えると、何か問題が発生する可能性がありますか?

良性であっても、私はプロジェクトのスケジュールに基づいて、私が取り替えることができない可能性があります。 LoadFileをLoadFromに置き換えることができない場合、依存関係をロードするためにLoadFileでロードされたアセンブリを納得させる方法はありますか? LoadFileでロードされたアセンブリで依存関係をロードできるようにするためのパッケージング・トリック(組み込みアセンブリ、ILMerge、AssemblyResolveイベントなど)はありますか?

答えて

4

注意:これらは同じ のものではありません。

LoadFrom()は、融合を通過し 異なるパスではなく一方が既に LoadFromコンテキストにロードされている場合、同じ 同一で別のアセンブリにリダイレクトすることができます。 LoadFile() はFusionをまったくバインドしません。 ローダーは先に進んで、 を正確に*呼び出し元が要求したものをロードします。 は、LoadまたはLoadFromコンテキストのいずれも使用しません。 Madhurアフジャの答えに加えて

http://blogs.msdn.com/b/suzcook/archive/2003/09/19/loadfile-vs-loadfrom.aspx