AppDomain: 再帰的アセンブリの読み込みと依存関係の管理
アセンブリとその依存関係を新しい AppDomain に読み込むのは難しい場合があります。 初心者の場合、よくある FileNotFoundException
は、依存関係が欠落していることが原因で発生することがよくあります。
問題を理解する
覚えておくべき重要な点は、アセンブリを AppDomain に読み込むとき、その参照アセンブリは自動的には読み込まれないということです。 これには、すべての依存関係が利用可能であることを確認するために再帰的な読み込みが必要になります。 これを行わないと、次のようなエラーが発生します:
「ファイルまたはアセンブリ 'MyDll、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null'、またはその依存関係の 1 つを読み込めませんでした。システムは指定されたファイルを見つけることができません。」
このエラーは、依存関係を再帰的に読み込む必要があることを明確に示しています。
依存関係に手動で対処する
一般的な試みには、ルート アセンブリの参照を反復処理し、それらを個別に読み込むことが含まれます。ただし、これにより、参照されたアセンブリ自体の依存関係に対して FileNotFoundException
エラーが繰り返し発生することがよくあります。
重要なステップ: CreateInstanceAndUnwrap
解決策は、ターゲット AppDomain 内でプロキシ オブジェクトが実行される前に CreateInstanceAndUnwrap
を使用することです。これにより、指定された AppDomain 内でプロキシが正しく実行されるようになります。
LoadFile
vs. LoadFrom
LoadFrom
を使用すると、GAC またはアプリケーションの bin フォルダーが検索されるため、問題が発生する可能性があります。 これを回避するには、LoadFile
を使用します。 依存関係を再帰的にロードするのは自分自身であることに注意してください。
概要
アセンブリとその依存関係を AppDomain に正常に読み込むには、依存関係を注意深く再帰的に読み込む必要があります。 CreateInstanceAndUnwrap
を使用し、LoadFile
ではなく LoadFrom
を選択すると、参照アセンブリを効率的に管理できます。
以上がアセンブリとその依存関係を AppDomain に再帰的に読み込む方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。