X.dll
プログラムにアセンブリをロードしていますが、どこでもかまいません。X.dll
クラスのインスタンスを作成しますX.A_Class
。しかし、アセンブリにアセンブリ、、およびX
が必要な場合はどうでしょうか。
どうすればこれを検出できますか?
それらを変数に保持せずにロードするにはどうすればよいですか?A
B
C
D
3 に答える
@alexn が述べたように Assembly.GetReferencedAssemblies を使用し、Assembly.Loadを使用してそれらをロードできます。または、 AppDomain.CurrentDomain.AssemblyResolveをフックして、オンデマンドで読み込むこともできます。
それらを反復する必要がある場合は、必ず再帰的に実行して、推移的な依存関係を取得してください。
Assembly.GetReferencedAssembliesメソッドを使用して、アセンブリの参照アセンブリを取得できます。
参照されるアセンブリは通常、自動的にロードされます(リンクの開始については、.NETでアセンブリをどのように解決しますか?などの関連メッセージを参照してください)。
標準の場所(GACやアプリケーションのルートフォルダーなど)からではなくアセンブリをロードする場合は、参照されるアセンブリをロードするためのセットアップパスが必要になる場合があります(「アセンブリのデフォルトのロードパス」を検索します-つまり、アプリ構成ファイル-http://msdn.microsoft .com / en-us / library / 823z9h8w.aspx)または、他の回答で説明されているように、AssemblyResloveイベントから自分でロードします。
アセンブリの読み込みに関する問題のデバッグを開始する最良の方法は、次のブログを読むことです:http: //blogs.msdn.com/b/suzcook/archive/2003/05/29/57120.aspx(および関連する投稿http:// blogs .msdn.com / b / suzcook / archive / tags / loader + debugging + Advice /)
編集:フォルダ->「ルートフォルダ」+プロービングパスの設定ファイルトピックへのリンク。