32ビットWindows 7デスクトップから64ビットWindows 7ラップトップに移動しました。私たちが開発中のC#プログラムには、ソリューション内に約60のプロジェクトが含まれています。ビルドしようとすると、次のエラーが発生し続けます。
Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed
明らかに、エラーは非常に自明であり、私のソリューション全体を32ビットモードでロードしようとしています。すべてのプロジェクトを実行し、ターゲットプラットフォームをx86に設定しましたが、まだこのエラーが発生します。私はGoogleを検索して、無数の異なるアプローチを見てきましたが、この問題を修正することができないようです。プロジェクトが64ビットマシンで32ビットモードで実行されていることを確認するための最良の方法は何ですか?
私はVisual Studio 2008を使用しています。現在32ビットへのダウングレードを検討していますが、これを回避する必要はありません。
64ビットのマシンで実行している場合でも、32ビットのOracleクライアントをインストールする必要があることがわかりました(インストーラのダウンロードは インストーラをダウンロード できます)。
さらに、ディスカッションの間、人々は32ビットモードなどについて話していました。これは、IIS 7のホストアプリケーションに対して確認または設定できる方法です。これを変更する必要はありませんが、完全性/将来の参照のためにここに追加しました。
32ビットとしてのみ実行するには、メインの.exeファイルを変更する必要があります。これはVisual Studioで行うことができます。プラットフォームターゲットを「任意のCPU」から「x86」に変更するだけです。
これが不可能な場合は、既存のexeを強制的に32ビットアプリケーションにするcorflags.exeを使用します。
私はこの問題に何ヶ月も苦労してきて、ようやく解決しました。私はすべての投稿が役に立ったと思いますが、1つ欠けていました。 Microsoft ODBCは、ユーザーDSNまたはシステムDSNのOracleインスタンス設定用ではありませんでした。Windows8マシンで作業しているため、一般的なWindows検索に移動する必要がありました。 ODBCと入力し、ODBC Data Source Administrator(32-bit)を開きます。MicrosoftODBCユーザーDSNタブまたはシステムDSNタブでのOracleセットアップの場合。追加しない場合は、追加をクリックしてMicrosoftを選択しますODBC Oracleの場合。ヒットするデータソースの情報を入力してください。 [OK]をクリックします。必ずコンピュータを再起動してください。これが最終的に私にとってうまくいきました。
私の場合、64ビットのOracleクライアントがマシンにインストールされましたが、それでも同じエラーが発生します。したがって、アプリケーションで右クリックして[プロパティ]-> [Web]タブに移動し、ローカルIISを使用している場合は[Use IIS Express]オプションをオフにすることを分析しました。 Webサーバー。問題は解決しました。
32ビットとしてのみ実行するには、メインの.exeファイルを変更する必要があります。これはVisual Studioで実行できます。プラットフォームターゲットを「任意のCPU」から「x86」に変更するだけです。 https://msdn.Microsoft.com/en-us/library/ms185328.aspx