是否可以在運行時更改DLL的路徑?我需要鏈接一個DLL,但是我將無法將該DLL提供給用戶,但我知道用戶在該硬盤上有該DLL。所以我給用戶顯示了一個通用表單,它可以輸入路徑,然後我必須採取該路徑(以字符串形式)並動態地將dll加載到我的程序中。加載後,我將使用該DLL的東西。在運行時設置引用的DLL路徑
這是可能的,即使如何做?
是否可以在運行時更改DLL的路徑?我需要鏈接一個DLL,但是我將無法將該DLL提供給用戶,但我知道用戶在該硬盤上有該DLL。所以我給用戶顯示了一個通用表單,它可以輸入路徑,然後我必須採取該路徑(以字符串形式)並動態地將dll加載到我的程序中。加載後,我將使用該DLL的東西。在運行時設置引用的DLL路徑
這是可能的,即使如何做?
添加到克里斯的答案。
爲了避免使用對加載的程序集反射,代碼的類對常見的接口組件中的,然後你可以實例化對象,像這樣:
Assembly assembly = Assembly.LoadFile(pathOfAssembly);
InterfaceName instance = (InterfaceName)assembly.CreateInstance("fully qualified type name", true);
您可以使用Assembly.LoadFile(pathOfAssembly)
方法從路徑中動態加載程序集或dll。一旦它被加載,你可以創建它包含的類的實例和調用方法。
如果我沒有在該項目的DLL參考,不會編譯!當我添加引用時,但DLL不在EXE位置時,我在調用Main()之前得到一個Exeption! – GameScripting
您需要將接口存儲在您動態加載的DLL和加載DLL的應用程序共有的程序集中。 – jdavies