- PR -

アセンブリ配置での最適な方法は?!

1
投稿者投稿内容
やんたん
ベテラン
会議室デビュー日: 2003/08/18
投稿数: 63
投稿日時: 2003-09-18 13:13
現在、親(共通)クラスのDLLと子クラスのDLLを別フォルダへの配置を想定した
アプリを作成しています。子クラスを呼び出すと、親クラスのDLLが見つからない
というエラーが出ますので、調べてみるといろいろ考慮する点が多く困っております。

まず、DLLにはプライベートアセンブリとGACへの配置という選択肢がありますが
モジュールの配置の簡易性を重視してプライベート配置で考えております。
プライベートアセンブリを選択した場合、DLLを探すのが既定では自フォルダと
探しているDLL名がついたサブフォルダとなっていますが、それでは要件を満たせません。(親クラスのフォルダは子クラスのサブフォルダにはしたくないので)

このような場合、残った解決方法としてはモジュールに厳密名をつけ、コードベースで
そのDLLを参照するように設定するしかないのでしょうか。
厳密名への変換方法もわかっておらず調査が必要なので、できればモジュールに変更を加えず(厳密名なしのまま)解決できれば助かります。

外部フォルダにある厳密名なしのDLLを探す(解決する)方法をご存知の方が
いらしたら教えていただけないでしょうか。

よろしくお願いします。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-18 15:31
すべて同じディレクトリに配置する。

「DLL Hell」をさけるには、結局「共通」な配置をさせられないから。


と、私は理解しているのですが。。。
ya
大ベテラン
会議室デビュー日: 2002/05/03
投稿数: 212
投稿日時: 2003-09-18 17:09
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconspecifyingassemblyslocation.asp

引用:

メモ 厳密な名前の付いていないアセンブリに対してコード ベースのヒントを提供する場合は、そのヒントではアセンブリ ベースまたはアプリケーション ベース ディレクトリのサブディレクトリを示す必要があります。



引用:

privatePath に指定するディレクトリは、アプリケーション ベース ディレクトリのサブディレクトリであることが必要です。



によると厳密名がついていないとどっちにしろできないようです。

コードに含めていいのなら AppDomain.AssemblyResolve イベントで Assembly.LoadFrom() メソッドあたりで読み込んで返してやるっていう手もなきにもしあらずですが…。

個人的には厳密名をつけることを薦めます。そんなに手間が増えるわけでもないですし。

http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_02/idnfw11_02_01.html
1

スキルアップ/キャリアアップ(JOB@IT)