web-dev-qa-db-ja.com

Oracle Client 64ビットとVisual Studio 2010を使用中にBadImageFormatException!

開発チームメンバーの1人にエラーが発生しました

OracleクライアントライブラリをロードしようとするとBadImageFormatExceptionがスローされました

そうみたいです

この問題は、32ビットOracleクライアントコンポーネントがインストールされた64ビットモードで実行している場合に発生します。

しかし、システムを構成したのは私でした-仕様は次のとおりです。

  • Windows 7 64ビット
  • Visual Studio 2010 Premium
  • ランタイムとしてインストールされたOracle Client 11g R2 64Bit

何かご意見は?

20
Data-Base

64ビットOSでVisual Studioを実行しているときに、最近これを数回見ました。簡単な回避策は、64ビット開発マシンに32ビットクライアントをインストールすることです。

よろしく、ピート

9
HaggardPete

2番目の回答を追加して申し訳ありませんが、同じマシンに64ビットと32ビットのクライアントがインストールされている場合、この問題も発生する可能性があります。

インストールされた2つのクライアント

C:\Oracle\product\11.2.0\client32Bit
C:\Oracle\product\11.2.0\client64Bit

パス環境変数を制御します。最初のOracleクライアントは、他のクライアントの前にロードされます。

 echo %PATH%
 XXXX;C:\Oracle\product\11.2.0\client64Bit\BIN;XXX

64ビットのOracleクライアントはPATHの最初にあるため、VS.NETはそれをOracle Connectionsに使用しようとし、Bad Image Exceptionをスローします。

  set PATH=C:\Oracle\product\11.2.0\client32Bit\BIN;%PATH%
  REM Visual Studio 2008
  "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
  REM Visual Studio 2010
  "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"

この後、Oracleに接続できます。もちろん、32ビットクライアントを最初にパスに配置できますが、他のアプリケーションでは32ビットの前に64ビットクライアントを配置することを好みます。

19
Atilla Ozgur

Windows 7にアップグレードした後、同じエラーが発生しました。VisualStudioの[プロパティ]ページの[ビルド]タブで、プラットフォームターゲットをx86に変更することで解決しました。

9
Keith Ketterer

Visual Studio 2013および64ビットOracleクライアント(11および12バージョン)でも直面する可能性のある同じ問題。私の解決策は次のとおりです。

a)デスクトッププロジェクト。 [プロジェクトのプロパティ]> [ビルド]> [32ビットを優先]チェックボックスを無効にします。

b)ASP.NETプロジェクトまたはWebサイトメインメニュー>ツール>オプション>プロジェクトとソリューション> Webプロジェクト>有効「IIS WebサイトおよびプロジェクトにはExpressの64ビットバージョンを使用する」チェックボックス。

6
codemonkey

IIS7のアプリケーションプールで2ビット対応サポート[〜#〜] false [〜#〜]に変更しました。これは私のために働いた。簡単だとわかりました。乾杯:)

3
SharpCoder

64ビットを使用する場合は、ここで私の答えを参照してください。
64ビットOracle DataAccess構成

32ビットに満足している場合は、Oracle Data Access Componentsの32ビット版をインストールするだけです。 Visual Studioの開発サーバーは32ビットなので、問題はありません。

0

この問題の迅速で簡単な解決策は、以下の手順のみに従う必要があります。

  1. Install.batファイルを実行してODACv11.2021Xcopy_x64をインストールし、作成されたパスとして「c:\ Oracle」を確認します。
  2. oracle 32ビットのネットワーク構成フォルダー[tnsnames.oraファイルを持つ管理フォルダーを含む]を「c:\ Oracle」にコピーします。
  3. PATH環境変数に「c:\ Oracle」パスを追加しました。

楽しい

よろしく、工学。ナワフ・H・ビン・タレブ。

0
Nawaf

同じ例外が発生し、2.0よりも高いバージョンのMVC、私の場合はMVC 4.0にアップグレードしたときに発生することがわかりました。

MVC 2.0で新しいプロジェクトを作成すると、問題は解決しました。

0
thabet

簡単な解決策:私のために働く。これを試して。

BadImageFormatException問題の解決策を見つけるのに4時間近く費やしました。

シナリオ:VS 2012、私は初めてOracleデータベースにエンティティモデルを追加しようとしていました。 Oracleデータベースのモデルを追加するには、2つのステップがあることを知っていました。

  1. サーバー探索を使用してOracleデータベースに接続します(接続文字列が作成され、モデルを追加するときに使用できる接続文字列)
  2. 既存の接続文字列(手順1で作成)を使用してモデルを追加します。

しかし、ステップ1自体でBadImageFormatExceptionの警告が表示され、解決策が見つかりました。 解像度:

  1. リンクに記載されている指示に従い、Oracleクライアントのインストールを完了します http://www.Oracle.com/technetwork/topics/dotnet/whatsnew/vs2012welcome-1835382.html
  2. インストールが正常に完了したら、簡単な手順、つまりモデルをプロジェクトに追加します。ここでは、ドロップダウンリストの既存の接続文字列を使用して、userid/pwdを指定します。

その後、モデルを使用する準備が整いました:)

0