簡體   English   中英

無法加載Oracle.DataAccess版本

[英]Oracle.DataAccess version could not load

我在WPF中遇到Oracle.DataAccess問題。 我使用Oracle.DataAccess v4.0沒有任何問題。 但現在它已更新到4.112版本,當我在WPF添加對此版本的引用時,無法加載設計器。 它給了我以下錯誤:

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但沒有任何變化。 我怎么解決這個問題。 提前致謝

問題出在我的Oracle.DataAccess.dll文件中。 我已經下載了ODAC 11 XCopy並將\\ odp.net4 \\ odp.net \\ bin \\ 4中的Oracle.DataAccess.dll復制到我的OracleClient的\\ odp.net \\ bin \\ 4文件夾中並替換了dll。 現在它就像一個魅力。

希望它對其他人有所幫助

我遇到了同樣的問題,我通過將依賴DLL放到Oracle.DataAcces來解決。 檢查此鏈接使用Oracle客戶端11部署.NET應用程序所需的最小設置是什么?

希望它應該有所幫助。

我已經多次處理過這個問題了。 下面是我經常用來部署應用程序的一些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. 根據您在Visual Studio中引用Oracle.DataAccess.dll的位置,您可以找到正確的Oracle主目錄(即client_1 \\ bin所在的位置)。 我有多個Oracle家庭,所以這是一個我必須克服幾次的問題。
  2. 以上適用於Oracle 11g。 如果你有Oracle 12c,我相信類似的過程會起作用,但有些文件名從* 11.dll變為* 12.dll。

在此輸入圖像描述

另一種解決方案是從64位Oracle數據訪問組件(ODAC)下載中下載並執行'ODAC112030Xcopy.zip'中的install.bat文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM