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

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

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

Re[3]: ODP.Net使用でファイルまたはアセンブリが読み込めない


(過去ログ 99 を表示中)

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

■58719 / inTopicNo.1)  ODP.Net使用でファイルまたはアセンブリが読み込めない
  
□投稿者/ OM (1回)-(2011/04/24(Sun) 18:18:33)

分類:[.NET 全般] 

VS2005、ODP.Netを利用してWeb開発をしております。

元々は32Bitマシンで開発をしていましたが、本番機が64Bitになるということで、
開発環境をX86からX64へ移行しております。

元々:WindowsXP(32Bit)、Oracle10g(32Bit)、ODP.Net(32Bit)
現在:Windows7 (64Bit)、Oracle11g(64Bit)、ODP.Net(64Bit)

VS2005の参照設定を64BitのOracle.DataAccessに変更し、
コンパイルをしたところ、ビルドエラーがでてしまい、一向に先にすすみません。
デバッグの構成マネージャーのプラットフォームは「.NET」、「Any CPU」になっております。

「以下、エラー内容」
--------------------------------------------------------------------------------
ファイルまたはアセンブリ 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral,
PublicKeyToken=89b483f429c47342'、またはその依存関係の 1 つが読み込めませんでした。
間違ったフォーマットのプログラムを読み込もうとしました。
--------------------------------------------------------------------------------

気になるところとしては、
・Webサイトの参照の追加で、「.NET」タブにOracle.DataAccessがありません。
 「参照」タブからOracleホーム下のODP.NETのOracle.DataAccessを指定しました。
・GACは登録されている。(C:\Windows\Assemblyの下にOracle.DataAccessが登録されている)
があります。

元々32ビットで開発しており、問題なく動作していましたので、ソースコードというよりも、
環境の問題かと予想しております。


現在の開発環境
OS   :Windows7 X64
ASP.NET:VS2005 SP1 2.0.50727
Oracle :11.2.0.1.0 64Bit
ODP.NET:2.112.1.0
言語  :C#


お知恵をお貸しください。宜しくお願い致します。

引用返信 編集キー/
■58737 / inTopicNo.2)  Re[1]: ODP.Net使用でファイルまたはアセンブリが読み込めない
□投稿者/ 魔界の仮面弁士 (2155回)-(2011/04/25(Mon) 10:54:42)
No58719 (OM さん) に返信
> 現在:Windows7 (64Bit)、Oracle11g(64Bit)、ODP.Net(64Bit)
> デバッグの構成マネージャーのプラットフォームは「.NET」、「Any CPU」になっております。
ODP.NET はおそらく AnyCPU 構成ではないと思いますので、プラットフォームは
X64 固定の方が良いような気がします。(32bit 用も作るなら、別途 x86 ビルドで)

で、私自身は一切検証していないのですが、Vistax64 + VS2005 + 64bit Oracle 11g な
同僚から聞いた話によると、VS2005 自体が 32bit モードで動く部分があるらしく、
32bit の OCI も一緒に入れておかないと動作しなかった…という情報を耳にしています。
ただし、2 年半前の情報です。(当時は ODP.net 11g が x64 未対応だったはず)

現在も同じ状況であるのかどうかは不明ですが、
以下、裏付けをとっていない伝聞情報ということで:

・x86 版 の InstantClient を US OTN からダウンロードして、
その zip を C:\Oracle\<username> の下にフォルダごと配置。

・上記を環境変数 PATH に通す。

・環境変数 NLS_LANG で文字コードを指定。
 (Oracle Client 11gのレジストリにある NLS_LANG と同じものを指定)

・tnsnames.ora を使う場合は、TNS_ADMIN を環境変数に追加。
 (x64 11g の Client が作成する network\admin をパスに指定することで、
 x64 のコンフィグツールで作った tnsnames を InstantClient とで共有できる)

・ついでに 32bit版のODBCドライバも InstantClient のフォルダーに投入しておくと、
 Access からも接続できる。

・なお、Oracle は丸括弧を含むパスにインストールすると動作しないので、
 32bit アプリの場合でも "Program Files(x86)" フォルダーには入れないように注意。
 http://support.microsoft.com/kb/555568/en-us
引用返信 編集キー/
■58752 / inTopicNo.3)  Re[2]: ODP.Net使用でファイルまたはアセンブリが読み込めない
□投稿者/ OM (2回)-(2011/04/25(Mon) 18:48:39)
>■No58737 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士様

回答有難うございます。

> ODP.NET はおそらく AnyCPU 構成ではないと思いますので、プラットフォームは
> X64 固定の方が良いような気がします。(32bit 用も作るなら、別途 x86 ビルドで)
最終的に64Bitマシンで稼動させるため、X64での構成に変更しました。
まだアセンブリのコンパイルエラーはでますが、構成はX64のままとします。


> 同僚から聞いた話によると、VS2005 自体が 32bit モードで動く部分があるらしく、
> 32bit の OCI も一緒に入れておかないと動作しなかった…という情報を耳にしています。
初めて聞いた情報です。
VS2005が64Bitでコンパイルできるため、32BitのOCIが必要だとは思いませんでした。

現在別業務に追われ、32BitのOCIでの検証はできていませんが、近日中に試しますので、
報告させてください。

まったく糸口がつかめなかったので、大変助かります。

引用返信 編集キー/
■58905 / inTopicNo.4)  Re[3]: ODP.Net使用でファイルまたはアセンブリが読み込めない
□投稿者/ OM (3回)-(2011/05/03(Tue) 17:38:44)
No58737 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士様

お世話になっております。OMです。

ご報告が遅れました。
結果から言うと、上手くいきませんでした。

>・x86 版 の InstantClient を US OTN からダウンロードして、
>その zip を C:\Oracle\<username> の下にフォルダごと配置。
>・上記を環境変数 PATH に通す。
>・環境変数 NLS_LANG で文字コードを指定。
> (Oracle Client 11gのレジストリにある NLS_LANG と同じものを指定)
>・tnsnames.ora を使う場合は、TNS_ADMIN を環境変数に追加。
> (x64 11g の Client が作成する network\admin をパスに指定することで、
> x64 のコンフィグツールで作った tnsnames を InstantClient とで共有できる)
OTNからODACをダウンロード。InstantClient11.2をC:\Oracle\<username>に配置し、パスを通しました。
NLS_LANG、TNS_ADMINを環境変数へ設定し、VS2005でコンパイルしたところ、
同様のエラーが出てしまいました。
--------------------------------------------------------------------------------
ファイルまたはアセンブリ 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral,
PublicKeyToken=89b483f429c47342'、またはその依存関係の 1 つが読み込めませんでした。
間違ったフォーマットのプログラムを読み込もうとしました。
--------------------------------------------------------------------------------


上記の他に、オラクルのバージョンのみ変更した環境を用意し、検証を行いました。

開発環境@ 元々の環境です。【エラーとなる】
OS   :Windows7 X64
ASP.NET:VS2005 SP1 2.0.50727
Oracle :11.2.0.1.0 64Bit
ODP.NET:2.112.1.0 64Bit
言語  :C#

開発環境A 新規作成した32Bitオラクルの環境【エラーにならない】
OS   :Windows7 X64
ASP.NET:VS2005 SP1 2.0.50727
Oracle :Instant Client 11.2.0.2.0 32Bit
ODP.NET:2.112.1.0 32Bit
言語  :C#
※OTNのODAC 11.2 Release 3 (11.2.0.2.1) with Oracle Developer Tools for Visual Studioを
 利用しています。


OracleClientとODPを32Bitにする事で、エラーがなくなるようなので、Oracleの何かが問題となっているようです。
前に進まず困り果てております・・

大変恐縮ですが、お力添えをお願い致します。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -