9

Visual Studio2012用にodp.net32ビットインストールをインストールしました。Oracle.DataAccess.dllへの参照を設定しましたが、Oracleへの接続が機能しているようです。

プロジェクト(.net 4)をビルドすると、次のエラーが発生します。プロジェクトはAnyCPUを構築するように設定されています(私のワークステーションは64ビットで、最終的にデプロイするサーバーは32ビットです)

'構築中のプロジェクト「MSIL」のプロセッサアーキテクチャと、参照Oracle.DataAcess、バージョン4.112.3.0、Culture = neutral、PublicKeyToken = 89b483f429c47342、processorArchitecture = x86、「x86」のプロセッサアーキテクチャの間に不一致がありました。この不一致により、実行時の障害が発生する可能性があります。プロジェクトと参照の間でプロセッサアーキテクチャを調整するために、Configuration Managerを介してプロジェクトのターゲットプロセッサアーキテクチャを変更することを検討してください。または、プロジェクトのターゲットプロセッサアーキテクチャと一致するプロセッサアーキテクチャで参照に依存してください。

これはvs.netの警告にすぎませんが、これを取り除く方法はありますか?

4

3 に答える 3

17

あなたが言ったように、それはただの警告です。ODP.netは「AnyCPU」ではないため、警告は、独自のアプリケーションのようにホストオペレーティングシステムに適応しない依存関係があることを示します。odp.netのインストールがビットの点でOSと一致している限り、問題はありません。しかし、コンパイラーはその決定を下すことができず、あなたに注意を向けようとしています。

エラーを無効にするための可能な変更(私はprojファイルを想定しています)を含むこれに関する接続記事を見つけました:

<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

いずれの場合も、サーバーにインストールする32ビットodp.netが参照した64ビットodp.netと同じバージョンである(またはパブリッシャーポリシーが適切にインストールされている)限り、「AnyCPU」アプリケーションはサーバー上で正常に実行されます。新しいバージョンにリダイレクトします)。混乱を避けるために、私は通常、参照用に「ローカルコピー」を「false」に設定します。言い換えれば、私はdllの特定のバージョンに対してコンパイルしますが、GACから解決されるもの(ほとんどのodp.netインストールに含まれるパブリッシャーポリシーを含む)に対して実行させます。

32ビットアプリケーションを実行/デバッグしたり、Visual内で「OracleDeveloper Tools for Visual Studio」に付属する統合ツールを使用したりするために、開発マシンに32ビットodp.netをインストールすることもできます(理想的には同じバージョン)。スタジオ。

とはいえ、ここで目にする以上のものがあります。アプリケーションが実際に実行されている場合(これは「単なる警告」を意味します)、32ビットインストールを使用していない場合よりも64ビットとして実行されます。お使いのマシンにはすでに64ビットバージョンがインストールされていると思います(複数のオラクルホーム)。

于 2013-02-01T18:08:34.047 に答える
1

別の解決策:

ODAC 11.2リリース5(11.2.0.3.20)をダウンロードし、コンパイラをx86に設定します。私はそれがオラクルに関連するすべての警告をきれいにするだろうと100%確信しています。名前空間を次のように設定します。using System.Data.Odbc;

次に、データベース接続を確立します。

于 2014-08-26T12:49:15.990 に答える
0

これはvs.netの警告にすぎませんが、これを取り除く方法はありますか?

32ビットマシンにデプロイし、64ビットで作成するため、これを取り除く方法はないと思います。これは、ドライバーに問題がある可能性があることを通知する単なる警告です。あなたが今何をしているのか心配する必要はありません。

あなたはそれを期待するべきです-あなたは64ビットアーキテクチャで32ビットライブラリを使用します。

于 2013-02-01T09:16:05.373 に答える