dll (dll_1) を動的にロードし、そこからコードを実行します。この問題は、この (dll_1) が別の dll (dll_2) を使用する場合に発生します。dll_1 に dll_2 を埋め込むことができません。
Assembly.LoadFile
thenCreateInstance
とを使用して dll をロードしInvokeMember
ます。
私は何をすべきか?
dll (dll_1) を動的にロードし、そこからコードを実行します。この問題は、この (dll_1) が別の dll (dll_2) を使用する場合に発生します。dll_1 に dll_2 を埋め込むことができません。
Assembly.LoadFile
thenCreateInstance
とを使用して dll をロードしInvokeMember
ます。
私は何をすべきか?
あなたの質問を正しく理解できれば、アセンブリへの参照が解決されていないことを検出し、アセンブリが正しく読み込まれるように介入できるようにする必要があります。
AppDomain.AssemblyResolveEventを使用して、それを行うことができます。
最も簡単なオプションは、LoadFile を使用せず、代わりに Load を使用することです。これは、通常のアセンブリ解決と同じ方法でアセンブリを解決するためです。
次のオプションは依存関係をプリロードするか、Eric J が提案したように AssemblyResolveEvent を使用することです。このルートに進む場合は、アセンブリの読み込みとコンテキストのバインドに関する Suzanne Cook の記事を読んでください(同じブログに関連記事が他にもあることに注意してください)。
リンクされた記事を除いて:
LoadFrom の利点:
アセンブリは、ApplicationBase の下からだけでなく、複数のパスから読み込むことができます。
このコンテキストにすでにロードされている依存関係は自動的に検出されます。
要求元の LoadFrom コンテキスト アセンブリと同じディレクトリ内の依存関係が自動的に検出されます。