2011-10-19 79 views
12

我在循環中使用Assembly.LoadFile(assemblyFilePath)加載程序集,如果程序集已經加載一次,我想避免調用Assembly.LoadFile。我應該擔心重複調用Assembly.LoadFile對於已經加載的DLL嗎?謝謝。我怎樣才能避免加載動態,我已經加載使用反射?

+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()這將只加載一次程序集。您也可以使用

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

看起來,Assembly.LoadFile至少在確定程序集已加載(可能更有效)的情況下比通過AppDomain.CurrentDomain.GetAssemblies()手動枚舉的效率更高。 – DeCaf

0

對於給定的AppDomain中找到有關當前應用程序域已加載的程序集,您可以撥打GetAssemblies,看看它的加載。

相關問題