11

最近、ODP.NET(Oracle.DataAccess 4.112.3)を使用するC#(4.0)アプリでテストを開始しました。

このプロジェクトを任意のプラットフォームをターゲットにしてアプリを公開するように設定しました。

クライアントマシンでプログラムを実行すると、次のようになります。

Could not load file or assembly 'Oracle.DataAccess, Version=4.112.3.0,Culture=neutral,
PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load 
a program with an incorrect format.

私が言ったように、私は「任意のCPU」をターゲットにしており、Oracle.DataAccessアセンブリもアプリに組み込んでいます。
このエラーは、Oracleクライアントがインストールされているマシンとインストールされていないマシンで発生します。

どんな助けでも大歓迎です。

4

4 に答える 4

18

私が言ったように、私は「任意のCPU」をターゲットにしました

これが問題である可能性があります。

Oracle.DataAccessには、32ビットシステムと64ビットシステム用に別々のバージョンあります。32ビットマシンで開発していて、64ビットOSにデプロイしている場合は、このメッセージが表示されます。

x86をターゲットとするアプリケーションを構築し、32ビットバージョンのデータアクセスコンポーネントを展開することで、これを簡単に回避できます。

于 2012-05-18T18:48:48.957 に答える
4

Reed Copseyが言ったように、2つの異なるDLLがあります。ANYCpuをターゲットにすると、アプリは64ビットマシンでは64ビットで実行され、32ビットマシンでは32ビットで実行されます。したがって、アプリを32ビットまたは64ビット動作させ、AnyCPUモードで実行する場合は、Oracle.DataAccessの参照を特定のバージョン= falseに変更し、local=falseをコピーする必要があります。クライアントにデプロイするとき、GACにoracle dllがあり、正しいバージョンを自動的に取得する必要があります。

于 2012-05-18T19:02:03.320 に答える
0

Oracle.DataAccessアセンブリにマシンに依存関係があるかどうか、およびクライアントマシンに依存関係がないかどうかを確認する必要があります。

于 2012-05-18T18:47:31.507 に答える
0

デバッグから上部の任意のCPUは、オプチンをデバッグX64に変更しますが、内部的には任意のCPuはX64のみを指しますが、それは機能しません。x64に変更してみてください。これは、魅力のように機能するはずです。

于 2016-03-21T08:24:38.210 に答える