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

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

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

Re[5]: 共通DLLの配置ディレクトリ


(過去ログ 21 を表示中)

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

■8876 / inTopicNo.1)  共通DLLの配置ディレクトリ
  
□投稿者/ ビタミンB2 (7回)-(2007/10/12(Fri) 11:35:39)

分類:[ASP.NET (VB)] 

開発環境:ASP.net Frameworkv1.1.4322
     Windows2003サーバ


よろしくお願いします。

共通DLLの配置ディレクトリですが、

C:/TEST1/gamen1/bin
|
- /common/bin

のようなディレクトリ構成で、
@"gamen1.aspx"を"/gamen1"に配置。
A"gamen1.aspx"でインポートしているcommon.dllを"/common/bin"に配置。
B"gamen1.aspx"のプロジェクトの参照設定で"/common/bin/common.dll"を追加。
C Bの参照設定の"ローカルにコピー"を"false"に設定。

と設定を行い、実行すると下記のようなエラーがでます。
"ファイルまたはアセンブリ名 common、またはその依存関係の 1 つが見つかりませんでした。 "
Cを"false"ではなく"true"にするとDLLがコピーされるので動きます。

このディレクトリ構成ではできないのでしょうか。







引用返信 編集キー/
■8877 / inTopicNo.2)  Re[1]: 共通DLLの配置ディレクトリ
□投稿者/ ビタミンB2 (8回)-(2007/10/12(Fri) 11:39:04)
ディレクトリ構成に間違いがありましたので再度書込みます。

開発環境:ASP.net Frameworkv1.1.4322
     Windows2003サーバ


よろしくお願いします。

共通DLLの配置ディレクトリですが、

C:/TEST1/gamen1/bin
C:/TEST1/gamen1/common/bin

のようなディレクトリ構成で、
@"gamen1.aspx"を"/gamen1"に配置。
A"gamen1.aspx"でインポートしているcommon.dllを"/common/bin"に配置。
B"gamen1.aspx"のプロジェクトの参照設定で"/common/bin/common.dll"を追加。
C Bの参照設定の"ローカルにコピー"を"false"に設定。

と設定を行い、実行すると下記のようなエラーがでます。
"ファイルまたはアセンブリ名 common、またはその依存関係の 1 つが見つかりませんでした。 "
Cを"false"ではなく"true"にするとDLLがコピーされるので動きます。

このディレクトリ構成ではできないのでしょうか。







引用返信 編集キー/
■8883 / inTopicNo.3)  Re[2]: 共通DLLの配置ディレクトリ
□投稿者/ 囚人 (206回)-(2007/10/12(Fri) 13:08:39)
通常、構成ファイルにそれなりの設定を書けば、アセンブリをロードするディレクトリを決めることができますが、ASP.NET は独自に CLR をホストし、特別なローディングを行っていますので、bin ディレクトリと GAC 以外からはロードできないはずです。確か。

引用返信 編集キー/
■8909 / inTopicNo.4)  Re[3]: 共通DLLの配置ディレクトリ
□投稿者/ 七曜 (26回)-(2007/10/13(Sat) 00:08:38)
web.configの<probing> 要素を指定する事で、追加で検索されるAssemblyのディレクトリを指定する事ができます。
http://msdn2.microsoft.com/ja-jp/library/823z9h8w(VS.80).aspx
(Referenceは、.NET Fx2.0のものですが.NET Fx1.1でもだいたい同じだったはずです。)
ただし、probingで指定できるのは"アプリケーションフォルダのサブフォルダのみ"であるため期待する様な
"アプリケーションフォルダとは別のフォルダをAssmblyの検索対象にする"事は出来ません。

これは確か、セキュリティ上の問題で、
 サーバー上の物理或いは論理フォルダ構造をたどる場合、
 アプリケーション自身の上位フォルダやその他のフォルダを検索対象にしない事になっているから、
だったかと思います。


実際問題としては、期待するようなフォルダ構成での配置は出来ませんので
(1)確実に複数のアプリケーションで共有したいのであれば、GACに登録する。
(2)共通ではあるものの、使用されるアプリケーションによってバージョンが異なる場合が想定される場合には、
  アプリケーションフォルダ配下のbinに格納しておく。
のいずれかの運用になるかと思います。

引用返信 編集キー/
■8973 / inTopicNo.5)  Re[4]: 共通DLLの配置ディレクトリ
□投稿者/ ビタミンB2 (9回)-(2007/10/15(Mon) 18:58:59)
たくさんのご回答有難うございます。

フォルダ構成を考え直し、web.configの<probing>を使用して対応してみます。
引用返信 編集キー/
■8974 / inTopicNo.6)  Re[5]: 共通DLLの配置ディレクトリ
□投稿者/ ビタミンB2 (10回)-(2007/10/15(Mon) 18:59:05)
No8973 (ビタミンB2 さん) に返信
> たくさんのご回答有難うございます。
>
> フォルダ構成を考え直し、web.configの<probing>を使用して対応してみます。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -