這裏的情況:我使用ILMerge使用this method(custom.dll
)合併組裝&所有它的引用到1個.dll文件。我有一個應用程序在運行時動態加載此程序集(program.exe
)。兩個應用程序&程序集都使用一個公共庫(common.dll
)。抽象類ClassX
在common.dll
中定義,而實現ClassY
在custom.dll
中定義。當program.exe
嘗試從custom.dll
加載ClassY時,將拋出異常:C#ILMerge無法轉換類型「優雅」的對象鍵入「ClassX」
無法投射「ClassY」類型的對象以鍵入「ClassX」。
代碼是這樣的,但foo
是動態加載的,而不僅僅是一個新的ClassY();
object foo = new ClassY();
ClassX bar = (ClassX)foo;
有沒有人有任何想法爲什麼會這樣做? ClassY
絕對實現了ClassX
,所有組件/庫版本完全相同。