none
Oracle.DataAccess参照時におけるエラーについて RRS feed

  • 質問

  • 現在、Visual Studio Professional 2015のASP.netで開発をしています。
    Versionは14.0.25123.00、.NET FrameworkのVersionは4.6.01055です。
    DBはOracleを使い、接続に際し64ビット版のOracle.DataAccess(4.112.3)の参照が必要なのですが、
    参照追加画面で追加(oracle\product\11.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll)を行いましても、
    VBが認識してくれず、下記コードで参照エラーが発生しています。

    Dim OraComm As Oracle.DataAccess.Client.OracleCommand

    64ビット版ではなく、32ビット版の
    Oracle.DataAccess(oracle\product\11.2.0\client_1\odp.net\bin\2.x\Oracle.DataAccess.dll)を参照したところ、
    参照エラーは消えております。
    64ビット版のOracle.DataAccessを直接紐づかせて参照させますと、参照におけるエラーは消えるのですが
    ビルド時においては認識されず、再びエラーが発生してしまっている状態です。

    問題の原因と、対応方法について教えてください。
    2016年4月8日 2:29

回答

  • お世話になっております。

    VS2015より新しいプロジェクトを作成し、参照の追加を試みましたが同じ現象が起こりました。

    別ルートで問い合わせをしておりましたところ、VS2015がOracle11のサポートをしていないのが原因と回答をいただきました。
    以下、問い合わせの内容です。

    ====================================
    【ご質問内容】
    -------------------------
    11.2.0) Microsoft Visual Studio 2015 は Oracle Database をサポートしているか教えてください。
    -------------------------
    【回答】
    OracleでMicrosoft Visual Studioを使用する場合、
    Oracle Developer Tools for Visual Studio(ODT)が最低限必要となりますが、
    Oracle11.2の場合には最新の11.2.0.3.20でVisual Studio 2012までがサポートされており、
    Visual Studio 2015はサポートされておりません。

    その為、現在Visual Studio 2015を使用して発生しているトラブルに関しては
    サポートされない組み合わせで使用している事が原因と判断します。
    尚、Oracle12cの最新のOracle Developer Tools for Visual Studio の
    新しいリリース12.1.0.2.4であれば、Visual Studio 2015をサポートしています。

    詳細は以下Oracle情報をご確認頂ければ幸いです。
    *******************
    Oracle Database向け.NETの新機能
    ⇒Oracle Developer Tools for Visual Studioのリリース別新機能
    http://www.oracle.com/technetwork/jp/database/windows/tech-info/newfeatures-084875-ja.html#ODT

    バージョン11.2.0.3.20 :Visual Studio 2012のサポート

    バージョン11.2.0.3.0  :新しいDDL生成テンプレートを含むエンティティ・デザイナのサポート、新しいデータベース生成ワークフロー
                          ・問合せウィンドウが、Intellisenseや折りたたみ機能を含む本格的な"コード・ウィンドウ"に
                          ・問合せウィンドウでの、パラメータ化された無名PL/SQLブロックのサポートの追加

    バージョン11.2.0.1.2  :Visual Studio 2010のサポート
    *******************
    ====================================

    Oracle11ではなく、Oracle12で開発をするという方向で進めてまいります。
    拙い質問内容でしたが、ご丁寧に調査、回答していただきありがとうございました。

    • 回答としてマーク b090425 2016年4月12日 8:04
    2016年4月12日 8:03

すべての返信

  • 開発時のサーバーには何を使っているのですか?

    もし、IIS Express 32-bit 版ですと 64-bit の .dll は使えませんが、それが問題になっているのでは?

    IIS Express には 64-bit 版があるそうですのでそれを使ってみるか、開発マシンが 64-bit OS で IIS も 64-bit 版なら IIS 上で開発してはいかがですか。

    2016年4月8日 2:50
  • 開発マシンとサーバーは同一端末で、Windows Server 2012R2を使用しています。
    IIS Expressについては使用していません。
    2016年4月8日 3:18
  • > 開発マシンとサーバーは同一端末で、Windows Server 2012R2を使用しています。
    > IIS Expressについては使用していません。

    私が聞いた「開発時のサーバーには何を使っているのですか?」の「サーバー」とは Windows Server 2012R2 というレベルのものではなくて、開発マシンの OS(質問者さんのケースでは Windows Server 2012R2 ですね)上で動いて ASP.NET Web アプリをホストする Web サーバーは何かということです。

    普通は、

    (1) ASP.NET 開発サーバー
    (2) IIS Express
    (3) IIS

    のいずれかになるはずです。

    質問者さんは Visual Studio Professional 2015 を使っているということなので (1) はなくて、(2) か (3) になるはずです。

    IIS Express は VS2015 をインストールする時に自動的にインストールされるのではないかと思います。

    VS2010 の頃は (1) が標準でインストールされたのですが、(1) が廃止になったので、最近の VS では (2) が標準でインストールされると聞いています。

    VS 上で Web アプリを実行したとき、以下の記事の最初の画像にあるように通知領域に IIS Express を実行中というアイコンが表示されれば IIS Express を使っているということになります。

    IIS Express をインストールしました
    http://surferonwww.info/BlogEngine/post/2012/10/08/iis-express-installation.aspx

    なお、(3) を使うにはそれなりの設定が必要で、質問者さんがその作業を行っていなければ、(2) で動いているということに間違いないと思います。

    2016年4月8日 4:02
  • Webサーバについては(3)IISを使用しております。
    今回の現象は、IISへの発行を行う前のビルド時に起きている問題になっております。

    VSのプロパティページにおける参照についてですが、
    1.参照名:Oracle.DataAccess、型:GAC、バージョン:4.112.3.0
    だと、エラーが発生しており、
    2.参照名:Oracle.DataAccess、型:BIN、バージョン:自動更新
    だと、エラーが発生していない状態です。

    1での参照エラーを解消しようと模索しています。
    よろしくお願いします。
    2016年4月8日 5:42
  • こんにちは。

    64ビット版ではなく、32ビット版の Oracle.DataAccess(oracle\product\11.2.0\client_1\odp.net\bin\2.x\Oracle.DataAccess.dll)を参照したところ、 参照エラーは消えております。 64ビット版のOracle.DataAccessを直接紐づかせて参照させますと、参照におけるエラーは消えるのですが ビルド時においては認識されず、再びエラーが発生してしまっている状態です。

    32bit版と64bit版のOracleClientが同一フォルダに共存しているということですか?
    またODACインストーラ等は32bitと64bitで別になっていますが両方インストールしたということでしょうか。

    OracleClientの2系と4系は.NET Frameworkの2系(~3.5)と4系(4以降)のために用意されているもので
    32bit / 64bit の分けでは無かったと記憶してますが。

    以上を踏まえての確認ですが、作成しているASP.NET Webアプリケーションの
    ターゲットフレームワークは本当に4.6なのでしょうか。

    、.NET FrameworkのVersionは4.6.01055

    この細かいリビジョンで少し気になったのですが、開発端末にインストールされているフレームワークのバージョンとプロジェクトが対象として指定しているランタイムのバージョンは別です。
    ASP.NETも同じだったかわからないですが、プロジェクトのプロパティなどから確認できないでしょうか。
    通常はプロジェクトテンプレート作成時に選択していると思います。

    2016年4月8日 6:48
    モデレータ
  • > 今回の現象は、IISへの発行を行う前のビルド時に起きている問題になっております。

    そうすると状況がよく分からないので自分としてはお手上げです。お役に立てずすみませんが、他の方の回答をお待ちください。

    Oracle 製品の話ですので Oracle のコミュニティで聞いていただくという手もあると思います(そのほうが解決が早いかもしれません)。


    #と言いながらですが、気になった点を 2 ~ 3(確信はなく、気になったというだけです)。

    (1) ...\bin\4\Oracle.DataAccess.dll が 64-bit 用、...\2.x\Oracle.DataAccess.dll が 32-bit 用とのことですが、そうではなくて、前者が .NET 4 用で後者が .NET 2.0 用ということはないですか?

    (2) ODT を含めた 32-bit 版 ODAC と 64-bit 版 ODAC の両方をインストールしているでしょうか?

    32-bit Oracle Data Access Components (ODAC)
    with Oracle Developer Tools for Visual Studio
    http://www.oracle.com/technetwork/jp/topics/dotnet/utilsoft-086879-ja.html

    64-bit Oracle Data Access Components (ODAC) ダウンロード
    http://www.oracle.com/technetwork/jp/database/windows/downloads/index-214820-ja.html

    (3) ODAC をインストールすると ODP.NET は GAC にインストールされ、それが使えるよう machine.config が書換られると思いますが、そのあたりは確認されているでしょうか?

    2016年4月8日 6:52
  • ご回答ありがとうございます。

    2種類のOracle.DataAccess.dllの区別については、.NET4と.NET2で区別するということで
    こちらの認識が間違っておりました。失礼しました。

    Oracleは64bit版でのみインストールしております。
    ODACは「64-bit ODAC 11.2 Release 5 (11.2.0.3.20) Xcopy for Windows x64」をインストールしております。
    ちなみにですがOracleのバージョンは11.2であり、VS2015に対してOracle11が合っていない
    (サポートしていないのでは?)という見解も上がっております…。

    ソリューションのターゲットフレームワークは、4.0となっております。(Web.configより確認)
    C:\Windows\Microsoft.NET\assembly\GAC_64配下にOracle.DataAccessがあるのは確認できたのですが、
    VSからの参照時、アセンブリ/拡張内にはOracleに関するものは存在していませんでした。

    今回のWebアプリについてですが、新規開発ではなくnetCobol for.NETよりつくられていたものの
    バージョンアップとして今回開発しております。もしかしたら、そこに原因があるのかもという話も出ております。
    私自身はoracleやnetCobolについてそこまで知識があるわけではなく、
    月曜以降、別の方がその方面での調査を行われる予定です。

    よろしくお願いします。(返信は来週以降になります。)
    2016年4月8日 9:08
  • ちなみにですがOracleのバージョンは11.2であり、VS2015に対してOracle11が合っていない (サポートしていないのでは?)という見解も上がっております…。

    サポートは確認してませんが、私が試した感じだと問題なかったのでおそらくこの点については問題ないと思います。

    今回のWebアプリについてですが、新規開発ではなくnetCobol for.NETよりつくられていたものの

    かなり怪しいですね。
    netCobol for .NETを使用せずにVisual Studioの標準テンプレートから新規ASP.NET Webアプリケーションの作成してみてください。
    その環境でOracle参照が問題なければ、netCobol for .NETの提供ベンダーへ問い合わせたほうが宜しいでしょう。

    2016年4月8日 9:16
    モデレータ
  • このスレッドから撤退した自分が今さらレスするのは何ですが、回答に参加したものとして以下のお願いをさせてください。

    > 今回のWebアプリについてですが、新規開発ではなくnetCobol for.NETよりつくられていたものの
    > バージョンアップとして今回開発しております。

    NetCOBOL というのは、ググって調べただけですが、富士通の製品で以下の記事のものですよね?

    NetCOBOL
    http://www.fujitsu.com/jp/group/fmw/products/netcobol/

    国内初の.NET Framework対応版COBOLを提供
    ・.NET Frameworkが提供するASP.NET、XML Webサービスなどのフレームワークにより、
     COBOLアプリケーションを効率よく開発。
    ・既存のCOBOLプログラムを簡単に.NET Frameworkに対応可能
    ・Visual Studio .NET IDE(統合開発環境)の採用により、他の開発言語製品間での
     一貫した開発~デバッグが可能

    であれば、そもそもこのフォーラムで質問することが適当かどうか・・・の話はとりあえず置いておくとしても、最初の質問に「新規開発ではなくnetCobol for.NETよりつくられていたもののバージョンアップ」という情報を書くようにしてください。

    質問者さんがどういう立場の方かわかりませんが、たとえ社内で分担して調べていて質問者さんの分担が Microsoft 製品部分のみであるにしても、ここで質問するより先に、

    > 私自身はoracleやnetCobolについてそこまで知識があるわけではなく、
    > 月曜以降、別の方がその方面での調査を行われる予定です。

    を先にして、質問の範囲を Microsoft 製品部分に切り分けて質問していただければと思います。


    • 編集済み SurferOnWww 2016年4月10日 1:07 一部修正
    2016年4月9日 2:05
  • お世話になっております。

    VS2015より新しいプロジェクトを作成し、参照の追加を試みましたが同じ現象が起こりました。

    別ルートで問い合わせをしておりましたところ、VS2015がOracle11のサポートをしていないのが原因と回答をいただきました。
    以下、問い合わせの内容です。

    ====================================
    【ご質問内容】
    -------------------------
    11.2.0) Microsoft Visual Studio 2015 は Oracle Database をサポートしているか教えてください。
    -------------------------
    【回答】
    OracleでMicrosoft Visual Studioを使用する場合、
    Oracle Developer Tools for Visual Studio(ODT)が最低限必要となりますが、
    Oracle11.2の場合には最新の11.2.0.3.20でVisual Studio 2012までがサポートされており、
    Visual Studio 2015はサポートされておりません。

    その為、現在Visual Studio 2015を使用して発生しているトラブルに関しては
    サポートされない組み合わせで使用している事が原因と判断します。
    尚、Oracle12cの最新のOracle Developer Tools for Visual Studio の
    新しいリリース12.1.0.2.4であれば、Visual Studio 2015をサポートしています。

    詳細は以下Oracle情報をご確認頂ければ幸いです。
    *******************
    Oracle Database向け.NETの新機能
    ⇒Oracle Developer Tools for Visual Studioのリリース別新機能
    http://www.oracle.com/technetwork/jp/database/windows/tech-info/newfeatures-084875-ja.html#ODT

    バージョン11.2.0.3.20 :Visual Studio 2012のサポート

    バージョン11.2.0.3.0  :新しいDDL生成テンプレートを含むエンティティ・デザイナのサポート、新しいデータベース生成ワークフロー
                          ・問合せウィンドウが、Intellisenseや折りたたみ機能を含む本格的な"コード・ウィンドウ"に
                          ・問合せウィンドウでの、パラメータ化された無名PL/SQLブロックのサポートの追加

    バージョン11.2.0.1.2  :Visual Studio 2010のサポート
    *******************
    ====================================

    Oracle11ではなく、Oracle12で開発をするという方向で進めてまいります。
    拙い質問内容でしたが、ご丁寧に調査、回答していただきありがとうございました。

    • 回答としてマーク b090425 2016年4月12日 8:04
    2016年4月12日 8:03
  • フィードバックありがとうございます。
    それはMicrosoftからの回答でしょうか、Oracleでしょうか。

    今回発生している問題は「参照エラー」なのですよね?
    なぜVisual StudioのバージョンやODTに依存する回答が出てくるのだろう……。
    ※VS上の何からのエクスプローラーウインドウなどが正しく動作しない、などであれば理解できるが。

    Oracle11gクライアントを利用したアプリケーションはVisual Studio 2015ではOracle12cに差し替えてモジュールリリースする必要があるということですか?
    ちょっと謎です…。

    実際、Oracle12cに変更することで参照エラーが発生しなくなったのでしょうか。

    2016年4月12日 8:17
    モデレータ
  • 回答はMicrosoftでもOracleでもなく、某総合ITベンダーのサポートから頂いております。
    Oracle12cはまだ手元にないのでこちらで確認はできておりませんが、
    上記サポートから以下の回答も頂いております。

    ====================================
     OS:Windows8.1(x64)
     製品:Visual Studio 2015 Pro

    ・Xcopy版ODAC121024(4.121.2.0)のx64版をインストールし確認したところ、
     参照設定から選択できました。

    ・次に、Xcopy版ODAC1120320(4.11.2.0.3.0)のx64版をインストールし
     確認しましたが、参照設定から選択できませんでした。
    ====================================

    それぞれOracle12c、Oracle11gで試されたそうです。

    11gのDBに12cのODACを使用して様子をみてみるという話もでておりますが、動作保証はなく、
    12cでそろえる必要があるという結論になりました。

    2016年4月12日 10:05
  • 12cを採用することに特に意義はありませんが、
    問題の理由について誤っている可能性があります。
    質問者さんの問題は解決しているようですのでこれに関する返信は頂かなくても結構ですが、
    今後こちらを参照される方もいらっしゃるかもしれませんので言及しておきます。

    質問者さんは知る由も無いかもしれませんが、
    サポート元の調査結果の回答について、これは12c、11gともにクリーンな環境で試されたのでしょうか。
    12cの検証後にアンインストールまたは上書きで11gを同じ環境で検証したのではないでしょうか。

    Oracleはアンインストール時にレジストリや環境変数などの情報が残ったりするので
    複数のバージョンが混在すると予期せぬ動作を行うことがよくあります。(クリーンにアンインストールする方法は面倒ですがちゃんとあります)

    今回の問題はそれによって引き起こされている可能性があります。

    私はWindows10でOracleをインストールしたことの無い環境へODAC11.2をインストールしてみました。(ODTは無しです)
    VisualStudio2015で参照追加を行いましたが、今回問題となったエラーは確認できませんでした。

    2016年4月12日 10:53
    モデレータ