2010-07-18 96 views
2

我試圖通過Assembly.LoadFrom將我的插件添加到我的應用程序中,我想知道是否有一個屬性知道裝入了什麼類型的程序集 - 動態鏈接的庫和可執行文件可以加載,對嗎?如何確定Assembly.LoadFrom確實加載了一個DLL文件?

謝謝!

+0

不知道我理解的問題 - 除非*執行*,包含程序集的exe仍然只是一個程序集包。你不能在這裏使用'Path.GetExtension()'嗎? – 2010-07-18 21:11:24

+0

同意。誰在乎文件擴展名是什麼?與非託管代碼相比,託管代碼有點不同尋常。但這是非託管代碼的一個缺陷。代碼==代碼,無論名稱在包裝上。功能,而不是一個錯誤。 – 2010-07-18 22:10:20

+0

這是一種偏離主題,但我建議你看看MEF,因爲它是一個非常好用的框架,可以將插件功能添加到您的應用程序中。 – 2010-07-18 22:32:06

回答

6

您可以確定由LoadFrom函數返回的程序集是否使用Assembly.EntryPoint屬性加載了EXE或DLL。如果該屬性爲入口點函數返回一個MethodInfo,那麼你正在處理一個EXE。

從MSDN:

類型: System.Reflection.MethodInfo一個對象 表示的 該組件的入口點。如果沒有找到入口點 (例如,該程序集是一個 DLL),則返回null。

http://msdn.microsoft.com/en-us/library/system.reflection.assembly.entrypoint.aspx

+0

謝謝!我明天會讓你高興。 – 2010-07-18 22:58:06

1

如果你想知道,如果它是一個.exe或.dll的,你可以檢查Assembly.Location

相關問題