- PR -

ASP.NETから参照するDLLについて

投稿者投稿内容
オレンジ
会議室デビュー日: 2006/04/10
投稿数: 8
投稿日時: 2006-04-13 12:50
ご回答ありがとうございます。
また、返信が遅くなりまして申し訳ありません。

結論から言うとbin配下に置くということで落ち着きました。
GACに置くというご意見をいただいて調べてみたのですが、
多くのアプリケーションで共有するものではないので
今回のDLLは置かないほうがいいという結論に達しました。


本当にどうもありがとうございました。
知識不足を痛感しているところで、
今後も勉強していきたいと思います。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-04-13 12:57
引用:

結論から言うとbin配下に置くということで落ち着きました。
GACに置くというご意見をいただいて調べてみたのですが、
多くのアプリケーションで共有するものではないので
今回のDLLは置かないほうがいいという結論に達しました。


本当にそれでよいのですか?

なちゃんさんも仰っていますが、
引用:

※その製品のDLLに厳密名がついている場合ですが(大抵ついてるような気も…)


大抵厳密名が付いていると思います。

そして Jitta さんが仰っていますが、
引用:

下手に bin ディレクトリにコピーすると、ロードに失敗して動かなくなりますよ。


ロードに失敗しますよ?

多くのアプリケーションで共有しないという理由で、ロードに失敗しても良いという結論に至るのは何故なのでしょうか。

_________________
囚人のジレンマな日々
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-04-13 21:48
 とりあえず、bin ディレクトリに、単純にコピーしてはいけません。
引用:

.NET Framework を使った簡単な配置と DLL Hell の解決 より:

バージョン番号は、メジャー番号、マイナー番号、ビルド番号、改訂番号からなります。メジャー番号とマイナー番号への変更は、互換性のない変更と見なされます。たとえば、開発者が何らかのメソッドのパラメータの型を変更した場合や、パラメータを削除したような場合です。このような場合、クラス ローダはこの情報を利用して、依存関係のあるアセンブリのうち互換性のないバージョンが標準でロードされないようにします。
(略)
標準では、参照を解決するためにロードされるアセンブリは、参照の中に記録されているメジャー番号とマイナー番号が同じでなければなりません。この番号が異なる場合、アセンブリは互換性がないと認識され、標準ではロードされません。


 メジャー、マイナー番号が違っていれば、ロードされません。
 もちろん、解決策もあります。その続きに書いてありますから、よく読んでください。
 また、「互換性がない変更」の意味も、十分に考えてください。

〆 written by Jitta@わんくま同盟 on 2006/04/13
□ Microsoft MVP for Visual Developer ASP/ASP.NET October, 2005 - September, 2006

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