我已經創建了一個程序集,例如Static.dll
,以及我在運行時創建的動態程序集,例如Dynamic
。 Dynamic
創建一些IL代碼以創建一個Static.dll
的新類型。當Dynamic
被創建(它成功保存)時,可執行文件在運行時出錯,因爲它無法加載程序集類型Static.dll
。我相信這是因爲Dynamic
EXE輸出找不到這個DLL(或者至少這是我的猜測)。將程序集/模塊加載到動態程序集中
如何在此Static.dll
引用中完成添加,以便當某人運行Dynamic
的結果可執行輸出時,它可以找到引用的類型?
我知道Assembly.Load()
,但這本身並沒有改變任何東西。或者至少,我不確定這是什麼給我的,因爲我不需要在運行時使用該類型,而是在運行Dynamic
可執行文件時。
最後,我控制着Static.dll
,所以如果有什麼我可以用項目來解決它,它可以做到,但是,它確實需要保持分離(我不想讓這個庫發送每次我創建一個動態組件)。基本上,我認爲我想我的動態程序集有一個.assembly extern mscorlib
它的清單保存Static
是mscorlib的地方。
感謝
您是否將Static.dll和Dynamic.dll一起發佈?如果您正在使用Reflection.Emit,則會自動添加實際的*參考*。你應該能夠使用反射器來確認這一點。程序集加載仍然遵循相對於exe根的探測規則。 – 2012-07-28 06:56:16
有沒有辦法將Static.dll類型加載到Dynamic,而不必提供Static.dll(可能通過反射將類型加載到動態中)?我可以確認.assembly extern Static雖然存在。 – OnResolve 2012-07-28 07:06:05
@OmResolve ILMerge也許?見答案。 – 2012-07-28 07:10:05