5

これは奇妙です。

を使用してDLLを動的にロードするWindowsアプリケーションがありますReflection.Assembly.LoadFrom(dll_file_name_here)

アプリケーションを別のDLLとILMergeするまで、期待どおりに機能します。

したがって、このシナリオは正常に機能します。

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

MyApp.exeとMyAppComponent.dllをILMergeすると、次のようになります。

  • MyApp.exe
  • Plugin.dll

呼び出しReflection.Assembly.LoadFrom("Plugin.dll")は正常に読み込まれるようですが、それを使って何かをしようとすると、次のようになります。

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

「要求されたタイプの1つ以上をロードできません。詳細については、ローダーの例外プロパティを取得してください」という例外が発生します。

イライラするのは、事前マージのデバッグが完全に機能するため、実際にはデバッグできないことです。

ヘルプ?

4

1 に答える 1

2

私の推測では、Plugin.dll は MyApp.exe または MyAppComponent.dll を参照していますが、これらはバイナリ互換性がない (MyApp.exe) か、ILMerging 後にまったく存在しない (MyApp.dll) と考えられます。

その場合は、それらを ILMerge しないでください。

于 2011-08-16T02:55:04.793 に答える