- PR -

[VB.NET] dll依存関係の競合について教えて下さい

1
投稿者投稿内容
らー
会議室デビュー日: 2004/03/27
投稿数: 6
投稿日時: 2004-04-13 00:20
VB.NET(Windowsフォーム)を使い始めて1ヶ月くらいの初心者です。
宜しくお願いいたします。

1業務処理を1プロジェクト(exe)で作っています。
複数のプロジェクトにある同様の機能を共通化するため、
機能をクラスライブラリで作成(dll)し、各プロジェクトがdllを参照設定するようにしています。

最近dllを多用していくにつれ、次のような警告が出るようになりました。
”警告:プロジェクト'PROJ_1'の依存関係'comAAA, Version=1.0.1560.25957, Culture=neutral' は、参照 'comAAA, Version=1.0.1563.36094, Culture=neutral' を上書きするため、実行ディレクトリにコピーできません。”
共通機能(クラスライブラリ)を順序良くリビルドし直すと
エラーはなくなるのですが、このようなやり方をしていると
いつまでたってもこのエラーに引きずるられるような気がします。
(きちんと関係を把握していないのが悪いかも知れませんが)
このようなやり方って、基本的な方法なのでしょうか?
また、このようなエラーを起こさない為の上手な方法があれば
アドバイス頂けないでしょうか?

<共通化の例>
@プロジェクトAが、共通クラスライブラリcomAAA.dll、comBBB.dll、comCCC.dllを参照設定
A共通クラスライブラリcomAAAは、comCCC.dllを参照設定
B共通クラスライブラリcomBBBは、comCCC.dllを参照設定
C@のようなプロジェクト(exe)が複数存在する。
・参照設定は、どの処理も「参照の追加」で「.NET」タグの「参照」ボタンでdllを直接指定しました。
・dllは、各プロジェクトのexeと同じところにコピーされてます。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-04-13 00:53
引用:

らーさんの書き込み (2004-04-13 00:20) より:
共通機能(クラスライブラリ)を順序良くリビルドし直すと
エラーはなくなるのですが、このようなやり方をしていると
いつまでたってもこのエラーに引きずるられるような気がします。
(きちんと関係を把握していないのが悪いかも知れませんが)
このようなやり方って、基本的な方法なのでしょうか?
また、このようなエラーを起こさない為の上手な方法があれば
アドバイス頂けないでしょうか?


手っ取り早いのは、DLL参照ではなくプロジェクト参照にしてしまう事です。
まあ、共通の方のプロジェクトを下手にいじらないようには注意した方がいいですが。

DLLに関しては、バージョンをひとまず固定してしまえばエラーは出なくなると思いますが、逆に古いの新しいのごっちゃになって矛盾が出てきてるのに気づかない危険もあります。
※ちゃんと管理してればいいんですけどね。
らー
会議室デビュー日: 2004/03/27
投稿数: 6
投稿日時: 2004-04-13 22:35
なちゃ様 ありがとうございます!

>手っ取り早いのは、DLL参照ではなくプロジェクト参照にしてしまう事です。

MSDNを見たのですが「プロジェクト参照」やら「依存関係」やら、
なかなか理解できませんでした。
多分、なちゃ様が言われた「プロジェクト参照」とはこんな事ですよね。
私の例で言うと、
プロジェクトAに対する参照設定として
comAAA.dll、comBBB.dll、comCCC.dllを参照追加するのでなく、
プロジェクトAが含まれるソリューションへ
comAAA.vbproj、comBBB.vbproj、comCCC.vbprojを追加し、
1ソリューション内に複数プロジェクトにしてしまう、
という意味ですよね。

初めは、参照設定の方法を変えるのかと思い、
「参照の追加」で「.NET」タグの「参照」ボタンでdllファイルを直接指定するのではなく、
「参照の追加」で「プロジェクト」タグの「参照」ボタンでdllファイルを直接指定する、
ようにしてみましたが、結局同じ警告が出て、この方法ではないと思いました。

「プロジェクト参照」にして「依存関係」というものを定義しておけばいいと
MSDNに書いてあり、やってみると
依存先のプロジェクトまでがビルドされてしまいました。
そして、同様に「プロジェクト参照」した他のプロジェクトをビルドすれば
また依存先がビルドされて・・・
いつになったら依存先は最新と言えるのか分からなくなりました・・・

やはり、
>※ちゃんと管理してればいいんですけどね。
これしかないのでしょうか。
長くなりすみません。
1

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