ホームページ >バックエンド開発 >C++ >アセンブリとその依存関係を AppDomain に再帰的に読み込む方法は?

アセンブリとその依存関係を AppDomain に再帰的に読み込む方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-15 12:24:45266ブラウズ

How to Recursively Load Assemblies and Their Dependencies into an AppDomain?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。