2012-09-22 83 views
5

我遇到Oracle.DataAccessWPF有問題。我用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並將Oracle.DataAccess.dll從\ odp.net4 \ odp.net \ bin \ 4複製到我的OracleClient \ odp.net \ bin \ 4文件夾中,並替換爲dll。現在它像一個魅力。

希望它對別人有幫助

+0

嗨,阿迪爾。你下載了哪個版本的ODAC 11 XCopy?我嘗試使用ODAC 11 XCopy Release 5,它現在可以爲我工作 –

+0

Hi @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 
} 

兩個音符,我可以添加有人奮力解決這個問題:

  1. 你可以找到正確的Oracle主(即在您的Client_1 \ BIN是)的基礎上,在那裏你參考在Visual Studio中使用Oracle.DataAccess.dll。我有多個Oracle家庭,所以這是我必須克服幾次的問題。
  2. 以上適用於Oracle 11g。如果你有Oracle 12c,我相信類似的過程會起作用,但是其中一些文件名從* 11.dll變成了* 12.dll。

enter image description here

相關問題