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

Ste*_*eve 5 c# vb.net ilmerge

这很奇怪.

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

它按预期工作,直到我用另一个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")) 
Run Code Online (Sandbox Code Playgroud)

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

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

救命?

Chr*_*ain 2

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

如果是这种情况,您不应该对它们进行 ILMerge。