5

这很奇怪。

我有一个 Windows 应用程序,它使用Reflection.Assembly.LoadFrom(dll_file_name_here).

它按预期工作,直到我将应用程序与另一个 DLL 合并。

所以这个场景工作正常:

  • 我的应用程序
  • MyAppComponent.dll
  • 插件.dll

一旦我 ILMerge MyApp.exe 和 MyAppComponent.dll 导致:

  • 我的应用程序
  • 插件.dll

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

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

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

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

帮助?

4

1 回答 1

2

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

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

于 2011-08-16T02:55:04.793 回答