トップ回答者
ASP.NETでのdllの配置方法

質問
-
お世話になります。
ASP.NETのWEBアプリケーションを稼動させる際、C#で作成したdllを使っています。
参照の追加でdllを追加してサーバーに配置すると/binディレクトリの下にdllをコピーします。
これですと、dllを修正した際、コピー先フォルダが多数になってしまうので、dllを一箇所にコピーして
各WEBアプリケーションは、それを参照するようにしたいのですが、どのように設定したらよいでしょうか?
JavaのCLASSPATHのような仕掛を希望しますが、どなたかご教授をお願い致します。
開発並びに運用環境
VisualStudio2012Professional
サーバー=WindowsServer2012
回答
-
どこか見当違いのような気がしますが・・・
> 共通化したいdllは1本です。数百画面(20~30サイトくらいか・・)か
> ら、それを参照したいです。できれば1箇所で管理したいです。「数百画面」はともかく「20~30サイト」(サイトではなくアプリケーション?)というのは本当ですか? そうだとしても、同時に平行して開発されることはないのでは?
であれば、dll を配布して書き換えてもらってもそれほど手間はかからないと思いますけど。
ASP.NET の既定のフォルダ Bin を使うのにはそれなりのメリットがあります。
ASP.NET Web プロジェクト内の共有コード フォルダー
http://msdn.microsoft.com/ja-jp/library/t990ks23%28v=VS.100%29.aspx"Bin フォルダーのアセンブリは登録する必要がありません。Bin フォルダーに .dll ファイルが存在するだけで、ASP.NET は認識できます。.dll ファイルを変更し、その新しいバージョンを Bin フォルダーに書き込むと、ASP.NET は更新を検出し、以後の新しいページ要求で、.dll の新しいバージョンを使用します。"
変なこと(失礼)を考えないで素直に Bin フォルダを使うことをお勧めします。
- 回答としてマーク bikke 2013年1月21日 23:27
すべての返信
-
To: 佐祐理さん
複数のWebアプリケーションについて
Webアプリケーションについては、検討開始したばかりで良く判っていませんが、今までのVB,Java,C等での開発経験から、なんらかのアプリ単位(今回はWebアプリケーション)に担当分けをするので、複数になります。サブシステム単位(アプリ10~30)で1個のWebアプリケーションになるとモアベターと思うのですが、複数人での開発方法論がわかりません。
同一dll参照について
共通処理を全プログラム(今回はWEbアプリケーション)で使うため、C,Javaでは、そのようなモジュールを作成しました。Javaならclass,Cならdllです。これらは、関係する全プログラムが参照しています。dllは、もともと、そうゆう機能ですよね?プログラム本数は数百本ですので、各プログラムへのコピーを避けたいです。
対応方法について
できれば、CLASSPATHのような、お手軽な方法論がうれしいのですが、ありますでしょうか?宜しくお願いします。
-
複数のWebアプリケーションについて
Webアプリケーションについては、検討開始したばかりで良く判っていませんが、今までのVB,Java,C等での開発経験から、なんらかのアプリ単位(今回はWebアプリケーション)に担当分けをするので、複数になります。サブシステム単位(アプリ10~30)で1個のWebアプリケーションになるとモアベターと思うのですが、複数人での開発方法論がわかりません。
同一dll参照について
共通処理を全プログラム(今回はWEbアプリケーション)で使うため、C,Javaでは、そのようなモジュールを作成しました。Javaならclass,Cならdllです。これらは、関係する全プログラムが参照しています。dllは、もともと、そうゆう機能ですよね?プログラム本数は数百本ですので、各プログラムへのコピーを避けたいです。
- 回答の候補に設定 佐祐理 2013年1月21日 23:48
-
どこか見当違いのような気がしますが・・・
> 共通化したいdllは1本です。数百画面(20~30サイトくらいか・・)か
> ら、それを参照したいです。できれば1箇所で管理したいです。「数百画面」はともかく「20~30サイト」(サイトではなくアプリケーション?)というのは本当ですか? そうだとしても、同時に平行して開発されることはないのでは?
であれば、dll を配布して書き換えてもらってもそれほど手間はかからないと思いますけど。
ASP.NET の既定のフォルダ Bin を使うのにはそれなりのメリットがあります。
ASP.NET Web プロジェクト内の共有コード フォルダー
http://msdn.microsoft.com/ja-jp/library/t990ks23%28v=VS.100%29.aspx"Bin フォルダーのアセンブリは登録する必要がありません。Bin フォルダーに .dll ファイルが存在するだけで、ASP.NET は認識できます。.dll ファイルを変更し、その新しいバージョンを Bin フォルダーに書き込むと、ASP.NET は更新を検出し、以後の新しいページ要求で、.dll の新しいバージョンを使用します。"
変なこと(失礼)を考えないで素直に Bin フォルダを使うことをお勧めします。
- 回答としてマーク bikke 2013年1月21日 23:27
-
> WEBの構造を良く判っておらず、ポイントがずれているかもしれませんが、御容赦ください。
> いわゆるWEBサイトを作るのでなく、業務アプリを作るので、
> アプリケーションのニュアンスがずれてしまったかもしれません。それはどういう意味ですか? 正しい用語を使っているでしょうか?
業務用のアプリであろうと何であろうと、ASP.NET Web アプリであれば dll の配置方法は同じですが。
ポイントがずれているぐらいならともかく、用語は正しくないと話が通じません。特に掲示板では話が通じず、無駄なやり取りをくりかえすばかりで、お互いフラストレーションが溜まります。正しい用語を使えるよう、ある程度知識をつけてから質問するようお願いします。
> とりあえず、下記の方法で対応する事としました。
> 1.アプリ毎のbinフォルダにdllを配置する
> 2.dllの修正時は、全dllを上書きするプログラムで更新する。念のための確認ですが、それは開発時の開発マシンでの話ですよね。運用時の Web サーバーでの話であれば GAC に配置するというのも選択肢になりますが、それは検討した上でのことですか。
-
To:SurferOnWwwさん
質問は、WEBアプリケーション毎のbinフォルダにdllを配置するのでなく、一箇所に配置できないか?でした。
皆様の御意見を拝聴すると、binに配置したほうがメリットあるとの事でしたし、コピーで対応できるのが、現状の監査方法からも好ましいので、とりあえず上記対応としました。GACについては、詳細に検討しきれないので、とりあえず未対応です。今後、モアベターな方法論を見つけた時は、そちらに切り替えるつもりです。
基本的に1サイト=1Webアプリケーションで開発するとの事でしたが、これについては認識していませんでした。繰り返しになりますが、当方のニーズからすると、1サイト=複数サブシステムで、1サブシステム=1Webアプリケーションになりそう・・・と、現状は思っています。
-
開発環境に限った話と思っていましたがそうでもないようですね。> GACについては、詳細に検討しきれないので、とりあえず未対応です。
少なくとも、Bin と GAC はどういうものか、先に紹介されたページを読むなりして勉強して理解してください。その知識がない状態で、開発環境、運用環境、dll の内容の違い、厳密名の有無に応じてどこに配置するのが適当かを考えても意味がありません。ここで議論するにしても、話が通じず、無駄なやり取りをくりかえすばかりになると思います。
> 繰り返しになりますが、当方のニーズからすると、1サイト=複数サ
> ブシステムで、1サブシステム=1Webアプリケーションになりそう・
> ・・と、現状は思っています。ASP.NET Web アプリの構成・特性などをほとんど理解されてないようですが、その状況で「ニーズ」をサイト/アプリケーション構成や開発体制に適切にブレークダウンできているのでしょうか?
まずは ASP.NET に関する本を読むなどして、体系的に基本的な知識を習得されることをお勧めします。