无法加载Oracle.DataAccess版本

时间:2012-09-22 05:50:32

标签: c# wpf oracle

我在Oracle.DataAccess WPF遇到问题。我用了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但没有任何变化。我怎么解决这个问题。  提前致谢

4 个答案:

答案 0 :(得分:6)

问题在于我的 Oracle.DataAccess.dll 文件。我已经下载了 ODAC 11 XCopy 并将\ odp.net4 \ odp.net \ bin \ 4中的Oracle.DataAccess.dll复制到我的OracleClient的\ odp.net \ bin \ 4文件夹中并替换了dll。现在它就像一个魅力。

希望它对其他人有帮助

答案 1 :(得分:3)

我面临同样的问题,我通过将依赖项DLL放到Oracle.DataAcces来解决。点击此链接What is the minimal setup required to deploy a .NET application with Oracle client 11?

希望它应该有所帮助。

答案 2 :(得分: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. 您可以根据从Visual Studio中引用Oracle.DataAccess.dll的位置找到正确的Oracle主目录(即client_1 \ bin所在的位置)。我有多个Oracle家庭,所以这是一个我必须克服几次的问题。
  2. 以上适用于Oracle 11g。如果你有Oracle 12c,我相信类似的过程会起作用,但有些文件名从* 11.dll变为* 12.dll。
  3. enter image description here

答案 3 :(得分:0)

另一个解决方案是下载并执行& ODAC112030Xcopy.zip' ODAC112030Xcopy.zip中的install.bat文件。来自64-bit Oracle Data Access Components (ODAC) Downloads