分類:[.NET 全般]
フォルダA┏実行ファイル
┣アセンブリa
┗アセンブリa'
フォルダB┏アセンブリb
┗アセンブリb'
上記のようなアプリケーションのフォルダ構成で、やりたいことはa'とb'のファイルパスを得ることです。
(ほんとにほしいのはb'だけでaおよびa'は説明のために表示しています)
実行ファイルからaとbの二つのアセンブリをロードしています(Assemblyインスタンスを取得可能)。
この二つのアセンブリがそれぞれa'とb'を参照していまして、GetReferencedAssembliesメソッドを使いアセンブリ名を取得することが可能です。
そしてa'の方はAssembly.Loadメソッドで読み込むことが可能なのですが、b'の方はファイルが見つからないというエラーが出ます。
これはAssembly.Loadメソッドが実行ファイルのフォルダしか見ていないことが原因では?と思っています。
考えた解決方法
・アセンブリbのインスタンスを取得できているので、そいつのLocattionとアセンブリ名を組み合わせてAssembly.LoadFileメソッド→Locationを取得。
=>アセンブリb'の拡張子がわからないため困難。(現在はdllだと仮定してやろうかと考えています)
・実行ファイルのプロジェクトがbを参照していれば、b'の存在がコンパイルの時点でわかるし解決できないのかと言われそうですが、bはプラグインとして動的に読み込んでいるため、実行ファイルのプロジェクトに含めることができません。
このようなケースでスマートにb'のパスを取得する方法はないものでしょうか?
|