2011-08-05 91 views
7

ODP.NETを使用してOracle DBに接続するアプリケーションを開発中です。私は、32ビットと64ビットの両方のマシン用に1つのバージョンを用意したいと思います。問題は、anycpuターゲットでprojetcをビルドする方法を見つけられなかったことです。目標はODPドライバのバージョンと同じである必要があるようです。したがって、同じアプリケーションのバージョンに32ビット用と64ビット用のバージョンが必要です。しかし、MS .NETのOracleクライアント(System.Data.OracleClient)を使用している間は同じ問題はありませんでした。 MS .NETクライアントと同じようにODP.NETを使用する方法はありますか?32bitと64bit両方のODP.NET

答えて

1

デフォルトのオプションは、x64とx86の両方のオペレーティングシステムで動作します。

つまり、同じアプリケーションのバージョンには、 が1つ、32ビットと64ビットが必要です。しかし、同じことがMS .NET Oracleクライアント(System.Data.OracleClient)を使用している間は の問題ではありませんでした。

これは期待されています。x86バージョンとx64バージョンをリリースする必要があります.x64アプリケーションはx64アセンブリを参照できません。その逆もあります。

Microsoftの参照が異なる理由は、既定で.NET Frameworkの一部であったためです。

ODP.NETにはx86アセンブリとx64アセンブリがありますが、私が思うところではファイルをダウンロードできません。

正しい方法は、プログラムのx86バージョンとx64バージョンをリリースすることです。

+0

"正しい方法"!= "オラクルがあなたにそれを働かせるように強制する方法"。リリースフットプリントの2倍は、データベースのライセンス料金を請求する際には管理しやすいかもしれませんが、ほとんどの人はその種の資本を持っていません。 – StingyJack

6

ODP.NETがnative OCI DLLsに依存しているのは根本的な原因ですが、もちろん「任意のCPU」にすることはできません。

理論的には、ODP.NETは.NETコードの現在の実行の「ビット数」を検出し、それに応じて32ビットまたは64ビットのネイティブDLLを動的にロードできますが、現在実装されていません。

Oracle社は現在、fully managed providerを実装中です。しかし、until then、私たちは、それぞれの "ビット"について別々のビルドを行う必要があります。

+1

別々のビルドは必要ありません。デプロイメント・ターゲットには1つのoracleクライアントしかなく、GACでDLLを参照している限り、「Any CPU」は問題ありません。たとえば、私は64ビット版のWebアプリケーションを構築します。私のプロジェクトはGACの32ビットデータアクセスライブラリを参照していますが、展開するとGACの同じライブラリが検索され、64ビットコピーが見つけられ、完璧に動作します。 –

8

わずか数年後に更新されました。OracleはマネージドODP.NETクライアントをリリースしました。したがって、.NETアプリケーションでx64/x86を使用する必要はありません。詳細については、OracleのWebサイトを参照してください。http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

+1

注意:ODP.NET 12. *はOracle 9データベースをサポートしていません(10のみ。2以上がサポートされています) – surfen

+0

あいにく、管理対象アセンブリを明示的なx86またはx64としてコンパイルします。 AnyCPUを使用している場合、同じプロセッサアーキテクチャの警告/エラーがさらに発生する可能性があります。 – StingyJack

-1

ODP.NETは、特に32ビットまたは64ビットのプラットフォーム向けに構築されています。 32ビットまたは64ビットプロセスで使用できるAnyCPU用の単一ライブラリを構築できました。しかし、Branko Dimitrijevicが触れたように、ODP.NETのマネージドdllは、舞台裏でネイティブライブラリを使用しています。ネイティブライブラリはプラットフォーム固有です。オラクルには各プラットフォーム用に個別のODP.NETライブラリを構築する必要があります。代わりはありません。

+0

これは既存の回答に何が追加されますか? – BradleyDotNET

関連する問題