2012-09-22 9 views
5

Oracle.DataAccessで問題が発生しました。WPFです。私はOracle.DataAccess v4.0 を問題なく使用しました。しかし、バージョン4.112にアップデートしました。このバージョンへの参照をWPFに追加すると、デザイナーを読み込めませんでした。次のエラーが表示されます。Oracle.DataAccessのバージョンをロードできません

System.BadImageFormatException 
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"に起因する可能性があることを読みました。私はx64とx86の両方をテストしましたが、何も変わりません。どうすればこの問題を解決できますか? ありがとうございます。

答えて

6

問題は私のOracle.DataAccess.dllファイルです。 ODAC 11 XCopyをダウンロードし、¥odp.net4¥odp.net¥bin¥4のOracle.DataAccess.dllをOracleClientの¥odp.net¥bin¥4フォルダにコピーし、dllを置き換えました。今は魅力のように機能します。

は、それは私がこの問題をあまりにも多くの時間を扱ってきた他の誰か

+0

こんにちは、Adil。どのバージョンのODAC 11 XCopyがダウンロードされましたか?私はODAC 11 XCopy Release 5を試してみました。今は私のために働いています –

+0

こんにちは@JackDaniel。私はそれがあなたのために働いてうれしいです。申し訳ありませんが、私は今覚えていません –

3

私は、依存関係DLLをOracle.DataAccesに入れて解決したのと同じ問題に直面しました。このリンクを確認してくださいWhat is the minimal setup required to deploy a .NET application with Oracle client 11?

希望する必要があります。

+0

どうすればよいですか?このすべてのddlsをすべてのWPFアプリケーションにコピーしますか? –

+0

はい。アプリケーションのDebugまたはReleaseフォルダに置きます。 Oracle.DataAccess.dllを配置するだけで参照する必要はありません。 –

+0

ありがとうございました。しかし、彼らはWPFのデザインモードについて話していません。しかし、私は試してみる。それが助けてくれることを願って –

0

に役立つことを願っています。以下は、私が日常的にアプリケーションを展開するために使用するPowerShellの一部です。私はこの問題を解決するために苦労して誰かのために追加することができます

$target = "\\SERVER\c$\PROJECT" 
$oracleBin = "C:\oracle\product\11.2.0\client_1\BIN\" 
$projectHome = "C:\Users\USER\Code\CSharp\PROJECT\bin\Release\" 
$files = @(
($oracleBin + "oci.dll"), 
($oracleBin + "orannzsbb11.dll"), 
($oracleBin + "oraocci11.dll"), 
($oracleBin + "OraOps11w.dll"), 
($projectHome + "EntityFramework.dll"), 
($projectHome + "EntityFramework.xml"), 
($projectHome + "Oracle.DataAccess.dll"), 
($projectHome + "PROJECT.exe") 
#,($projectHome + "PROJECT.exe.config") 
) 
foreach($f in $files) { 
    copy-item $f $target 
} 

2つのノート:

  1. あなたは正しいOracleホーム(つまり、あなたのclient_1の\ビンがどこにあるか)を見つけることができます、あなたが参照している場所に基づいて、 Visual Studio内のOracle.DataAccess.dll。私は複数のOracleホームを持っているので、これは数回克服しなければならなかった問題です。
  2. 上記はOracle 11gで機能します。 Oracle 12cをお持ちの場合、同様のプロセスが動作すると思われますが、ファイル名の一部が* 11.dllから* 12.dllに変更されます。

enter image description here