这很奇怪。
我有一个使用Reflection.Assembly.LoadFrom(dll_file_name_here)
动态加载DLL的Windows应用程序。
它按预期工作,直到我用另一个DLL ILMerge应用程序。
所以这种情况很好:
ILMerge MyApp.exe和MyAppComponent.dll导致:
调用Reflection.Assembly.LoadFrom("Plugin.dll")
似乎加载成功,但是一旦我尝试对它做任何事情,例如:
foreach ( typeAsm in Reflection.Assembly.LoadFrom("Plugin.dll"))
我收到异常“无法加载一个或多个请求的类型。检索加载器例外属性以获取更多信息”。
令人沮丧的是我无法真正调试它,因为调试预合并工作完美!
帮助?
答案 0 :(得分:2)
我的猜测是,在ILMerging之后,Plugin.dll引用了MyApp.exe或MyAppComponent.dll,它们不是二进制兼容的(MyApp.exe)或根本不存在(MyApp.dll)。
如果是这种情况,你不应该ILMerge。