我正在構建C#.net 3.5應用程序。動態加載DLL時未找到方法
我有一個exe 'MainApp' 它引用一個DLL 'CommonDll'
的CommonDll動態加載另一個DLL 'LoadedDll' 和動態調用方法調用FUNC()。
在 'LoadedDll' 引用 'CommonDll'
在 'CommonDll'有一個方法foo()其中FUNC()正在呼叫。
func()
{
foo();
}
所以,我們到目前爲止有:
MainApp ==> CommonDll ==動態地==> LoadedDll
LoadedDll ==> CommonDll。直到我改變了方法foo()以獲得一個布爾參數:foo(bool val);也cheanged的FUNC()在 'LoadedDll' 到
func()
{
foo(true);
}
我在版本1.1
的MainApp(引用舊CommonDll)的1.0版本,並LoadedDll(引用新CommonDll)對於某些原因,我得到一個「MethodNotFound Excepion」方法foo說它找不到foo獲得布爾參數。
這是怎麼發生的? LoadedDll正在使用對已更新的CommonDll的靜態引用,所以爲什麼它找不到該方法?
此外,該異常並不是說它找不到'func()'方法,它是動態加載的,但它說它找不到foo方法。
編輯:
我看着在GAC的DLL,但它是不存在的,是有原因的舊的DLL已在內存將被加載,而不是新的另一個原因?
顯示您的dll加載代碼。 –
我把它用於反射來調用這些?如果你是,你是否將參數對象數組傳遞給invoke方法? – LukeHennerley
嘗試重建應用程序。 –