11

我最近开始在使用 ODP.NET (Oracle.DataAccess 4.112.3) 的 C# (4.0) 应用程序上进行测试

我将此项目设置为针对任何平台并发布应用程序。

当我在客户端机器上运行程序时,我收到:

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”,并且我还在应用程序中嵌入了 Oracle.DataAccess 程序集。
我在安装了 Oracle 客户端的机器以及未安装的机器上收到此错误。

任何帮助表示赞赏。

4

4 回答 4

18

就像我说的那样,我的目标是“任何 CPU”

这很可能是问题所在。

Oracle.DataAccess 具有用于32 位64 位系统的不同版本。如果您在 32 位机器上进行开发,然后在 64 位操作系统上进行部署,您将收到此消息。

您可以通过构建以 x86 为目标的应用程序并部署 32 位版本的数据访问组件来轻松解决此问题。

于 2012-05-18T18:48:48.957 回答
4

As Reed Copsey said, there are two different DLLs. When you target ANYCpu, your app will run in 64 bit on a 64 bit machine, and 32 bit on a 32 bit machine. Therefore, if you want your app to work on 32 or 64 bit and run in AnyCPU mode, you should change the reference of Oracle.DataAccess to Specific Version=false and copy local = false. When you deploy to a client, they should have the oracle dll in the their GAC and it should pick up the correct version automagically.

于 2012-05-18T19:02:03.320 回答
0

您或许应该检查 Oracle.DataAccess 程序集在您的机器中是否有任何依赖关系,并且它在客户端机器中是否缺失。

于 2012-05-18T18:47:31.507 回答
0

从顶部的 debug Any cpu 将 optin 更改为 debug X64,尽管在内部 Any CPu 仅指向 X64 但这不起作用,尝试将其更改为 x64,它应该像魅力一样工作

于 2016-03-21T08:24:38.210 回答