質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.90%

VisualStudio 64bitのOracleDataAccess.dllを採用した 型付きデータセットの開発は行えますか

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 5,416

score 167

本件はこの投稿の問合せ主旨になります。
上記で長々と書いてしまいましたが、何を達成するための問合せか自らも分かり難いと思いましたので、別案件として掲載させて頂きました。元の案件は環境の設定方法が明らかになったら 更新したいと思います。

【本題】
Oracle社から提供されているVisualStudioのアドイン(Oracle Developer Tools for Visual Studio)は32bit版しかないと、認識しています。このアドインはこちらのように提供されており、あくまでOracleClientをメインとした提供と当方に受けとめています。

さて、このアドインを設定するとVisualStudio上のプロジェクトではOracleDataBaseとの接続設定(接続文字列)を簡単に登録することができます。データベースとの接続設定を新規に作る際、このアドインを設定すると下記画面が現われるようになります(アドインが設定されていない場合は表示されません)。
![イメージ説明](2b8123f361ec87bccb307ac2bcb0f437.png)

また、この接続設定を継承した構築物(データセットを利用した一覧表示やコンボボックスなど数限りなし)を多様に仕上がられるようになっています。

【質問】
開発端末が32bit/運用環境が64bitの場合、開発環境での構築も64bitに対応したものを仕上げることが最良と認識しています。
今までの文面と先の画面でお分かりのとおり、開発端末には、32bitのOracleClient込みのアドインを設定せざるを得ない認識でおり
64bitの運用環境へ成果物を移行することを考えれば、開発端末に64bitのOracleClientもセットアップすべきなのかなぁと考えています(現実にWindows10 64bitへ VisualStudio2012をそのようにセットアップしました)。

しかしながら、先の画面で32bit版・64bit版のOracleClientのdllまでは選ぶことができません。VisualStudio2012だからでしょうか??

ちなみに、32bitのOracleClient同梱のアドインを、VisualStudio用途の機能を除いてアンインストールしようとしたところ 最低でもOracleClientは必須・外せない、というエラーが出てしまい失敗に終わっています。VisualStudio上必要機能だけを残し 64bitのdllを活かすようなことを目論みましたが...
これもVisualStudio2012だからだったのでしょうか....

20190511 2302 画像追加
イメ![イメージ説明
(開発端末 Windows10 64 bit プログラムと機能の一覧から抜粋)

20190512 1058 画像追加
イメージ説明
(VisualStudio2012 ツール->オプション)

201905122 1303 画像追加
イメージ説明
イメージ説明

20190512 1905 Web.Configへのアセンブリ追加
イメージ説明

20190513 1329 画像追加
イメ![イメージ説明f20519f18a9f5936f64c1c62c1bf6634.png)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

先の画面で32bit版・64bit版のOracleClientのdllまでは選ぶことができません。VisualStudio2012だからでしょうか??

VisualStudio2012 だからという訳ではなくて、Visual Studio には 32-bit 版しかないからでしょう。

Visual Studio が 32-bit 版しかない以上、Visual Studio を Oracle に接続してウィザードを使って型付 DataSet + TableAdapter とか ASP.NET Entity Data Model を生成するには ODT.NET も ODP.NET も 32-bit 版を使う意外選択肢はないはずです。

だから、選ぶも何も、ODT.NET には 32-bit 版しかないので、そもそも「先の画面で」選べるようになっていないということだと思います。

ただ、開発が完了したアプリの場合は ODP.NET しか関係ないので、x64 でコンパイルして 64-bit 版の ODP.NET を使うといったことは可能だと思います。

ODP.NET の 32/64-bit 版が同一開発マシン内で共存できるかどうか自分は分かりませんが(ACE など共存できないものもあります)、もし共存可能で参照設定で 64-bit dll を指定可能であれば、ウィザードで必要なコードを自動生成してアプリが完成した後、参照設定を変えてコンパイルし直すということで対応できないですか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/13 14:17

    SurferOnWwwさん、お時間を頂き誠にありがとうございます、また、曖昧な表現をしてしまい申し訳ありませんでした。Webアプリケーションのプロジェクトではなく、Webサイトです。

    >GAC_32 フォルダに 32-bit 版の ODP.NET が、GAC_64 フォルダに 64-bit 版の ODP.NET がインストール済みという状況ですか?

    YESです。


    >Binフォルダに64bitのOracleDataAccess.dllを格納というのは止めて GAC の dll を使うようにしてはいかがですか?

    Binフォルダ削除後に実行しても、<compilation><assemblies>に記述したdllを読み込めない失敗・事象がやはり変わらず発生してしまいました。

    >(Visual Studio は 32-bit で動いているので、GAC_32 の 32-bit 版 ODP.NET を自動的にロードするはず)実際、質問者さんの開発環境で問題なく作れているのですよね?

    Binフォルダにdllを残した状態かつ、<compilation><assemblies>に読み込めないdllの記述を残した状態のまま、新たにOracleデータ参照のデータセットを今しがたこしらえてみたところ 無事作成できました。開発作業の過程では仰られているとおり32bitのdllが正常にロードされているのかなぁ...と認識しています。

    ちなみに、Binフォルダを削除し、<compilation><assemblies>の当該部分もコメントアウトしてVS上で実行したところ、同じパーサーエラーが発生しました。
    これは 自分で当該開発端末上のIISExpressを x64版を動作させるようにしているからかなぁと考えています。つまり根幹の問題:Binフォルダに64bitのdllを収めて実行させた際 折り合いがつかない事象をものがたっっているのかな、と。この考え あっていますかねぇ...

    <compilation><assemblies>にdllの記載をすると読み込めない、というエラー表示を招いていますが、Binフォルダに収めてIISExpressと折り合いがつかない事象と ひょっとして本質同じ?? とか疑いだしています。 64bitのdll自身に問題がないか、ということです。
    読み込めない際の表現が、”指定されたファイルがみつかりません" とシンプルに表現されていることが多少気になるのですが、VSからしてdll自身に問題があったと判断した場合 いつもこの表現になる、ということであれば ビンゴ?! と思ったわけです。どうでしょう...

    今更ながらお伝えして申し訳ありませんが、64bitのdllは 32bitのdllより 後継のVerを当該端末にセットアップしています。(32bit:ODAC1120320 / 64bit:ODAC122011)
    これを32bitのVerと同じ時代の64版をセットアップしてみて 状況を探ってみようと考えだしています。
    もう少し早く本件を言及するべきでした、重ねてお詫び申し上げます。

    本文に先ほど追加した画像は 開発端末のIISExpressの実行状況(タスクマネージャ上)になります。こちらx64の動作ということで認識しておりますが 間違いございませんでしょうか?差し支えなければ・お時間に余裕ございましたら ご見解を頂けますと幸いです。

    (コンソールアプリーションでの見極め、64bitDLLを改めたうえ それでもダメなら試してみますね)

    キャンセル

  • 2019/05/13 15:38 編集

    web.config に指定したアセンブリ名が間違ってませんか? だから見つからないというエラーになっているのでは。

    誤: Oracle.DatAccess
    正: Oracle.DataAccess

    IIS Express が 32/64-bit どちらで動いているかは「詳細」タブの「プラットフォーム」で分かると思います。

    これで解決できなければ、誰か Face-to-face で相談に乗ってくれる人を探してもらった方がよさそうです。

    キャンセル

  • 2019/05/13 17:21

    SurferOnWww様 いつもお世話になっております。
    ご指摘頂いたとおりアセンブリ名を修整し、当方が疑っていたdllの差替えは一先ずあとにしてVS上で実行してみました。すると状況は変わらず...。
    しかしSurferOnWwwさんのご指摘は明らかに正しい筈!と認識し、64bitの疑いのdllを差替えて実行してみることにしました。すると---->無事データが現われるようになりました。本当にありがとうございました。頭があがりません。

    初歩的なことでSurferOnWwwさんの貴重なお時間を頂いてしまい、誠に申し訳ございませんでした。
    途中でご見解頂いたVSを IIS Express x64で動作させるべき、というご見解も 一連のなかで非常に重要な要素だったと解釈しております。

    >IIS Express が 32/64-bit どちらで動いているかは「詳細」タブの「プラットフォーム」で分かると思います。
    これも良い経験になりました。自分のWindows10 64bitは 詳細タブでのプラットフォーム列が現われておりませんでした。ヘッダ部で列の表示・非表示を切替えられるのですね

    ①64bitのdllを本番環境を強く意識しすぎ、開発端末:VS2012には相応しいdllではなかった
    ->ダウングレードを入れて対応

    ②64bitの本番環境を想定するASP.NET構築なら、開発端末でのIISExpressは64bitを動作させるように
    ->http://iron.3rin.net/asp.net/iis%20express%2064bit%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0 を参考(レジストリ修整/自己責任)

    ③64bit実行のためのdll参照を、当該プロジェクトの参照追加(Binフォルダ格納)ではなく、Web.Configにアセンブリする記述を採用
    ->誤やまった記載からVS2012が表示したエラーのとおり、ファイルがみつからない状態だった。->訂正

    これが一連と認識します。SurferOnWwwさん ありがとうございました。

    キャンセル

0

ODAC関係ですから、オラクルのサポート契約が使えるなら、オラクル・サポートに問い合わせてみては?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る