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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

3301閲覧

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

saya24

総合スコア222

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/05/10 04:56

編集2019/05/13 04:31

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

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

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

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

【質問】
開発端末が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)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

先の画面で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/10 05:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saya24

2019/05/10 09:20

いつもお世話になっております、SuferOnWwwさんの見解をお待ちしておりました。 スッキリできました、やはりそういう背景からdllは選べないのでしょうね。 >x64 でコンパイルして 64-bit 版の ODP.NET を使うといったことは可能だと思います これに挑戦してみたいと思います。差し支えなければご見解ください。 一先ず共存という解釈をただ単に、同一開発端末内に配置させられること、と位置づけるのであればそれはWindows10 64 bitマシンで既に対応できています。 具体的には、既に開発したもの・及びこれから開発していくASP.NET4.0 ReportViewerのレポートデザイナに型付データセットが適用されている・していく方針です。 開発端末・VisualStudio上のデバッグ実行、及びサーバの本番運用では 64bitのOracleDataAccess.dllを参照する動作を達成したいわけですが 参照の追加操作で、Binフォルダに64bitのOracleDataAccess.dllを格納することで達成されるものでしょうか? 本番環境であるサーバには今の想定だと64bitのdllしか配置しない想定なので、こちらの環境に一式をディプロイすれば 結果は早いのですが いかんせん この環境がなくて... (WindwosServer2008R2のMSサポート切れから移行を計画中です)
退会済みユーザー

退会済みユーザー

2019/05/10 09:30

> Binフォルダに64bitのOracleDataAccess.dllを格納することで達成されるものでしょうか? ASP.NET Web アプリならそれで OK だと思います。試してみてください。 なお、開発用の Web サーバーに何を使っているか不明ですが、それを 64-bit 動作させる必要があるので注意してください。
saya24

2019/05/11 14:09 編集

コメント最後の部分で ご親切に貴重なアドバイスを頂きありがとうございました。 自身の開発端末:Windows10 64bitはおろしたて、VisualStudio2012もインストール仕立てで特段変更を加えていない状態ですから、想像するにこの環境でテスト実行する上ではIIS Express(x86)があがってきてしまっている?? IIS(x64)があがってくるようにしたい、とまさに ご想像どおりのところで躓いております。 こちらを参考にしましたが https://docs.microsoft.com/ja-jp/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/deploying-to-iis ちょっと理解できませんでした。 本文に このパソコンのプログラムと機能の一覧から IISをキーワードに表示された画像を収めました。やはり、現況 この開発端末には 外部からIISのインストールが必要という状況でしょうか? インストール後はSuferOnWwwさんのサイトで紹介されているVS側での設定が必要ということでしょうかね...
退会済みユーザー

退会済みユーザー

2019/05/11 23:48

IIS Express を 64-bit で動かしてそれを使ってはいかがですか? IIS Expressを64bitモードで動かす https://blog.xin9le.net/entry/2014/05/07/220837 上記は VS2013 の記事で、質問者さんの VS2012 に同じ機能があるかは分かりませんが。無ければレジストリの設定で可能だという話を聞きます(保証の限りではありませんが)。 ローカル IIS を使うには、開発マシンでの IIS の有効化、IIS でのサイトの設定、サイトのフォルダのアクセス権の設定、LocalDB は使えないのでその対応などが必要です。 IIS Express がどうしても使えない場合はやむを得ませんが。
saya24

2019/05/12 02:16

SurferOnWwwさん ご支援まことにありがとうございます。 残念ながらVS2013とVS2012で状況が異なるようで、ご紹介の記事のように当方のVS上ではこの切り替えが行えないようです。本文に画像追加しました。 もう少し IIS Expressを64bit版を動作させることに挑戦したいと思います。(IISは最後の手段として以下を参考にしてみます) 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
saya24

2019/05/12 04:03

VS2012上の実行時、タスクマネージャを見た限り iisexpress.exeは (32ビット)の表記なしとなりました。一難さってまた一難...(もう泣きそう) VS2012での実行時 System.Data.Design.Internal.Exceptionというパーサーエラーを招くようになりました。今から本文に画像貼り付けます。 差し支えなければ・お手すきであれば この解決策について ご見解を頂けないでしょうか? デバッグ実行した際に AnyCPUと表れていることは気になっています。x64を限定するような実行ができるのでしょうか、デバッグ構成の画面でプラットフォーム列の設定を私は変えられないのですが。 そもそも パーサエラーは これが問題なのでしょうかねぇ
退会済みユーザー

退会済みユーザー

2019/05/12 04:27

エラーの原因は分からないです。 プラットフォームターゲットは Any CPU で問題ありません。IIS Express が 64-bit で動いていれば、Any CPU にしておけば 64-bit で動きます。
退会済みユーザー

退会済みユーザー

2019/05/12 05:11

問題とは関係ないかもしれませんが気になったので一言。 App_Code フォルダを使っているようですが、Web サイトプロジェクトですか? Web アプリケーションプロジェクトでは App_Code フォルダは使いません・・・と言うより二重コンパイルの問題が出るので使ってはいけません。 外出するので今日はこれ以降返事はできません。明日になりなす。
saya24
saya24

2019/05/12 10:29

現在自身が進めている方向性は正しいのかわからないのですが、現況の報告になります。 Web.config内の<compilation><assemblies>にBinに格納している話題の64bitのdllを記載してみることにしました。ところがこちらの64bitのdllが当該開発端末のGACに登録がないことが発覚。存在しているべきなのか否かも不確かでしたが、登録を進めました。 この上で先に言及の通りWeb.configを編集。デバッグ実行していみると、追記したアセンブリを読み込めない、というエラーを招いている のが実状です。本文に画像を追加しました。 VC上の実行時 きまってGAC_32側を参照しにいくなら 現在起きている問題もありえますが 推察ばかりで進めるのも こわくなってきたので 一度手を止めたいと思います。
退会済みユーザー

退会済みユーザー

2019/05/13 02:54

> Webサイトのプロジェクト(の筈)です。 自身がなさそうですが、そうであればきちんと調べて明確にすることをお勧めします。32/64-bit の話とは直接関係ないかもしれませんが、非常に重要なことですので。 > Binフォルダに64bitのOracleDataAccess.dllを格納することで達成されるものでしょうか? その方針(bin フォルダに 64-bit dll をコピー)で進めるのだと思ってましたが、 > ところがこちらの64bitのdllが当該開発端末のGACに登録がないことが発覚。存在しているべきなのか否かも不確かでしたが、登録を進めました。 「登録を進めました」ということは、64-bit 版の ODP.NET をインストールしたということで、現在は GAC_32 フォルダに 32-bit 版の ODP.NET が、GAC_64 フォルダに 64-bit 版の ODP.NET がインストール済みという状況ですか? であれば、Binフォルダに64bitのOracleDataAccess.dllを格納というのは止めて GAC の dll を使うようにしてはいかがですか? Visual Studio のウィザードで型付 DataSet + TableAdapter を作るときは Visual Studio から 32-bit 版 ODT.NET と 32-bit 版 ODP.NET 経由で Oracle に接続に行って必要なコードが生成されると思います。(Visual Studio は 32-bit で動いているので、GAC_32 の 32-bit 版 ODP.NET を自動的にロードするはず)実際、質問者さんの開発環境で問題なく作れているのですよね? アプリを実行するときは、アプリが 32-bit で動けば(例えば x86 でコンパイル)GAC_32 フォルダの 32-bit 版の ODP.NET が、アプリが 64-bit で動けば(例えば x64 でコンパイルして 64-bit OS 上で起動)GAC_64 フォルダの 64-bit 版の ODP.NET が自動的にロードされると思います。 ただ、今出ている GAC_64 の dll を読めないという問題を解決するのが先ですが。IIS Express の設定の問題が解決できてないのであれば、コンソールアプリで試してみてはいかがですか?
saya24

2019/05/13 05: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 07:27 編集

web.config に指定したアセンブリ名が間違ってませんか? だから見つからないというエラーになっているのでは。 誤: Oracle.DatAccess 正: Oracle.DataAccess IIS Express が 32/64-bit どちらで動いているかは「詳細」タブの「プラットフォーム」で分かると思います。 これで解決できなければ、誰か Face-to-face で相談に乗ってくれる人を探してもらった方がよさそうです。
saya24

2019/05/13 08: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さん ありがとうございました。
guest

0

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

投稿2019/05/10 05:39

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問