除了可执行文件是ILMerged之外,动态加载工作正常

时间:2011-08-16 02:50:27

标签: c# vb.net ilmerge

这很奇怪。

我有一个使用Reflection.Assembly.LoadFrom(dll_file_name_here)动态加载DLL的Windows应用程序。

它按预期工作,直到我用另一个DLL ILMerge应用程序。

所以这种情况很好:

  • MyApp.exe的
  • MyAppComponent.dll
  • Plugin.dll

ILMerge MyApp.exe和MyAppComponent.dll导致:

  • MyApp.exe的
  • Plugin.dll

调用Reflection.Assembly.LoadFrom("Plugin.dll")似乎加载成功,但是一旦我尝试对它做任何事情,例如:

foreach ( typeAsm in Reflection.Assembly.LoadFrom("Plugin.dll")) 

我收到异常“无法加载一个或多个请求的类型。检索加载器例外属性以获取更多信息”。

令人沮丧的是我无法真正调试它,因为调试预合并工作完美!

帮助?

1 个答案:

答案 0 :(得分:2)

我的猜测是,在ILMerging之后,Plugin.dll引用了MyApp.exe或MyAppComponent.dll,它们不是二进制兼容的(MyApp.exe)或根本不存在(MyApp.dll)。

如果是这种情况,你不应该ILMerge。