1. ホーム
  2. visual-studio-2010

[解決済み] ファイルまたはアセンブリ「Oracle.DataAccess」またはその依存関係の 1 つをロードできませんでした。

2022-02-07 09:49:35

質問

このウェブアプリケーションを実行しようとしています。次のようなエラーが発生します。 ファイルまたはアセンブリ "Oracle.DataAccess"、またはその依存関係の 1 つを読み込めませんでした。不正なフォーマットでプログラムをロードしようとしました。 例外の詳細です。System.BadImageFormatException. "ファイルまたはアセンブリ "Oracle.DataAccess"、またはその依存関係の 1 つをロードできませんでした。不正なフォーマットでプログラムをロードしようとしました。 以下は、すでに試したことです。

  1. すべてのOracle DLを32ビットのOracle DL、すなわち2.112.3.0に置き換えました。

私は、64ビットマシンに32ビットクライアントをインストールしています。オペレーティングシステムはWindows 7です。

  1. 個々のプロジェクトを個別にコンパイルします。すべてのOracle依存ファイルのDLLを削除し、2.112.3.0のDLLを個別に追加して、各プロジェクトをコンパイルしてください。

  2. 次のステートメントを使用して、GACに32ビットDLLを登録します。 gacutil /i %ORA_HOME4%odp.netbin4Oracle.DataAccess.dll

gacutil /i %ORA_HOME4%asp.net.

上記2つの文のために、gacutil.exeをc:୧Program Files(x86)゙Microsoft sdk┣v7.0A↩Bin┣NETFX4.0 Tools┣からコピーしました。 をC:⇄ドライブにコピーしてください。

上記2つのステートメントを実行しました。

gacutil /i %ORA_HOME4%odp.net 오racle.DataAccess.dll gacutil /i %ORA_HOME4%Asp.net ↵oracle.web.dll 上記2つの文を実行したところ、何のメッセージも表示されず、Dos窓で管理者権限で実行しました。

  1. また、この場所からASP.netのTemporaryファイルをすべて削除しました。

c:\windowsMicrosoft.NetTemporary ASP.net files また、WebアプリケーションのビルドプラットフォームのターゲットをX86に変更しましたが、元々、"ANy CPU"になっていました。

Webapp またはその依存物の 1 つをロードまたはアセンブルしていません。不正なフォーマットでプログラムを読み込もうとしました。

私はIISをコンピュータにインストールしていません。私はこのアプリケーションをビジュアルスタジオ2010で実行しているので、ビジュアルスタジオに付属する内蔵のIISを使用することになると思います。

この問題を解決するために多くの時間を費やしましたが、まだ同じエラーが何度も出ています。

解決方法は?

あるマシンから別のマシンに移動し、すべてを再インストールしたときに、また問題が発生しました。私の場合、32ビットと64ビットの両方のOracle ODP.NETを使用しています。

新しいマシンでアセンブリをリストアップしたところ、以下のようなリストになりました。

 C:\oracle\product\11.2.0\X64\odp.net\bin\4>gacutil /l|findstr Oracle.DataAccess
     Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.102.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.111.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.2.112.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
     Policy.4.112.Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64

ここでは64bitのDLLしか見ることができません。

web.configでは確認できませんでしたが、使っていたのは32bit版でした。

GACutilで古いマシンをチェックしたところ、X86のものも含め、より多くのDLLが見つかりました。

登録のやり直しで修正(x32/x64版ともにこちらを参照)

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x32\ODP.NET\bin\4\Oracle.DataAccess.dll

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x64\ODP.NET\bin\4\Oracle.DataAccess.dll

その後、Visual Studioは幸せなウサギのように、すべてを再びコンパイルしてくれました。