- PR -

複数バージョンのODP.NETを使用した開発環境について

投稿者投稿内容
toto
常連さん
会議室デビュー日: 2005/10/18
投稿数: 46
お住まい・勤務地: 岡山
投稿日時: 2006-06-21 18:40
VS2003
ASP.net 1.1
Win XP Pro
ODP.net 9.2、10.1、10.2

上記で複数のプロジェクトの開発を行っています。
プロジェクト毎にODP.netのバージョンが違うのですが、ODP.netのバージョンの数だけ、ディスクを用意して、それぞれに、OS、開発環境をインストールして、ディスクを差し替えて開発を行っています。

もっとスマートな方法があるのではないか?

と思い、色々調べたのですが、oracle clientのユニバーサルインストーラーで環境と言う項目を変更すれば、ODP.netの環境を1台のディスクで切り替えて開発を行えるのではと思いました。
しかし、環境を切り替えてもVS2003からODP.NETのバージョンを見ると、変更されていませんでした。
何か設定を間違えているのでしょうか。
それとも、根本的に間違えているのでしょうか。
皆さんの開発方法なども教えていただければと思います。

よろしくお願いします。
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-06-21 18:58
VS2003で参照されている ODP.NET のDLL(Oracle.DataAccess.dll)は GAC にインストールされているものではないでしょうか。
複数バージョンが混在する環境では開発をしたことはありませんが、
GAC 上に各バージョンのDLLが登録されていませんか?

Oracle の新しいバージョンをインストールしたとしても、
各プロジェクトの参照DLLの参照先がかわることはないと思います。
参照設定をしなおしてみてはどうでしょうか。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2006-06-21 19:02
ODP.net って一つの環境に 1 バージョンしかインストールできなかったはず...。
_________________
もしもし@RMAN 友の会
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-06-21 19:12
複数バージョンはインストールできないんですか。
できてもやりたくないようなきもしますが・・・。

プロジェクトごとに参照DLLのバージョンを変えて単純にビルドが通ればいいだけなら、
それぞれのプロジェクトが参照している共通DLLをあつめたフォルダかどこかに、
それぞれが使用するバージョンのDLLをコピーしておいて、
それを参照させるだけでいいのではないでしょうか。
toto
常連さん
会議室デビュー日: 2005/10/18
投稿数: 46
お住まい・勤務地: 岡山
投稿日時: 2006-06-22 09:18
もしもしさん
masaさん

返信ありがとうございます。

引用:

ODP.net って一つの環境に 1 バージョンしかインストールできなかったはず...。


やはりそうなのですか。。。
と言う事は、今まで通りディスクを差し替えながら開発を進めるしかないようですね。

引用:

Oracle の新しいバージョンをインストールしたとしても、
各プロジェクトの参照DLLの参照先がかわることはないと思います。
参照設定をしなおしてみてはどうでしょうか。


参照するODP.NETのバージョンは変わらないと思っていたのですが、変わってしまっていたのです。
最初は10.2でプロジェクト開発を行っていて、その後別プロジェクトで10.1を使うので、インストールしました。
10.2のプロジェクトで追加機能があったので、追加しようとすると、参照設定のODP.netのバージョンが10.1になっていました。
環境を切り替えて、再起動して、参照設定をもう一度行ったのですが、10.1から変わらず。
結局、10.1をアンインストールをして再起動で、10.2に戻りました。
複数バージョンのインストールによる開発はあきらめた方が良いのでしょうか。
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-06-22 11:56
プロジェクトから参照されるDLLの参照先は、
VSを起動したときにある意味「動的」に判断されます。
明示的に指定されていない場合、GACの中を探しにいきます。

今、DLLの参照パスはどこになっていますか?
GAC(c:\windows\・・・・・)だと思うのですが。

Oracle のインストーラーによって、
それまでのバージョンのDLLがGACから削除され、
新たに再登録されているのではないでしょうか。

"Side by Side" という考え方があります。
GACを使わずに明示的にDLLを参照設定してあげれば、
少なくともVSから見るDLLの参照先・バージョンは固定できると思います。

masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-06-22 12:00
プロジェクトのプロパティの参照パスに、
使用したい Oracle.DataAccess.Dll(ですよね?)の格納されているパスを追加してみてください。

そうすればDLLのプロパティのパスがそのパスに変わり、
ランタイムバージョンも変わると思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-25 08:44
Virtual PC

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