C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: AssembyNameからアセンブリのパスを取得したい


(過去ログ 83 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■49073 / inTopicNo.1)  AssembyNameからアセンブリのパスを取得したい
  
□投稿者/ デザパタ (9回)-(2010/04/21(Wed) 15:04:34)

分類:[.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'のパスを取得する方法はないものでしょうか?

引用返信 編集キー/
■49088 / inTopicNo.2)  Re[1]: AssembyNameからアセンブリのパスを取得したい
□投稿者/ やじゅ (1595回)-(2010/04/21(Wed) 23:47:02)
やじゅ さんの Web サイト
No49073 (デザパタ さん) に返信
> そしてa'の方はAssembly.Loadメソッドで読み込むことが可能なのですが、b'の方はファイルが見つからないというエラーが出ます。
> これはAssembly.Loadメソッドが実行ファイルのフォルダしか見ていないことが原因では?と思っています。

アプリケーション構成ファイルに、privatePathを追加してみたらどうですか? dll仮定ってことで
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_05.html
http://msdn.microsoft.com/ja-jp/library/15hyw9x3(VS.80).aspx
引用返信 編集キー/
■49093 / inTopicNo.3)  Re[2]: AssembyNameからアセンブリのパスを取得したい
□投稿者/ なちゃ (425回)-(2010/04/22(Thu) 09:31:30)
最初のロードを、LoadFileでやってます?
LoadFromならいけたりしませんか?
どっちにしてもあまりおすすめはしませんが。

プローブフォルダの追加は、ややうろ覚えですがサブディレクトリしか出来なかったはずです。
もしできたとしても、厳密名がついたアセンブリしか読めないはずですので、
そういう制約が発生します。


引用返信 編集キー/
■49105 / inTopicNo.4)  Re[3]: AssembyNameからアセンブリのパスを取得したい
□投稿者/ デザパタ (10回)-(2010/04/22(Thu) 14:21:47)
やじゅさんありがとうございます。

>アプリケーション構成ファイルに、privatePathを追加してみたらどうですか? dll仮定ってことで
>http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_03/idnfw11_03_05.html
>http://msdn.microsoft.com/ja-jp/library/15hyw9x3(VS.80).aspx

Oh、プローブフォルダ。そういえばそんなのもありましたね。
厳密名をつけてますし特にフォルダの階層を気にせずいけそうです。
考えさせて頂きます。


なちゃさんありがとうございます。

>最初のロードを、LoadFileでやってます?
>LoadFromならいけたりしませんか?
>どっちにしてもあまりおすすめはしませんが。

最初のロードを、LoadFileでやってました。
が、
今はパスからAssmeblyNameを取得して、Assmelby.Load()を行っています。
LoadFile使うと同じアセンブリが複数のフォルダに配置されたとき別物として読み込んでしまうようで、
困ったことが起きまして・・・。
LoadFromを試す機会はなさそうですが、情報ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -