2011-10-19 6 views
12

ループ内でAssembly.LoadFile(assemblyFilePath)を使用してアセンブリをロードしています。アセンブリが既に1回ロードされている場合、Assembly.LoadFileの呼び出しを避けたいと思います。すでにロードされているDLLのAssembly.LoadFileを繰り返し呼び出すことについて心配すべきでしょうか?ありがとう。Reflectionを使用して既に読み込んだアセンブリを動的にロードするのを避けるにはどうすればよいですか?

ない
+1

Load()およびLoadFile()は、アセンブリをさまざまなコンテキストにロードします。 LoadFile()が、単にアセンブリ名で見つかるフォルダ内にある場合、なぜ使用しますか?次の記事を参照してください。http://blogs.msdn.com/b/suzcook/archive/2003/09/19/loadfile-vs-loadfrom.aspx http://blogs.msdn.com/b/suzcook/archive/2003 /05/29/57143.aspx – jishi

答えて

19

アセンブリがすでにロードされている場合は、Assembly.LoadFileを(呼び出した場合、それは再び

ロードされませんので、あなたが心配する必要はありませんんが)、あなたは同じアセンブリを複数回読み込むことができますが、毎回異なるパスからアセンブリをロードする場合にのみ使用します。アセンブリを一度だけロードするAssembly.Load()を使用できます。また、特定のAppDomainについて

Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies(); 
+4

Assembly.LoadFileは、AppDomain.CurrentDomain.GetAssemblies()を使って手動で列挙するよりも、少なくともアセンブリが読み込まれている(おそらく効率的です)と考えているようです。 – DeCaf

0

を使用して、あなたはGetAssembliesを呼び出すことができますし、それがロードされるかどうかを確認し、現在のアプリケーションドメインに既にロードアセンブリについては見つけることができます。

関連する問題