Oracle.DataAccess不匹配错误

我为Visual Studio 2012安装了odp.net 32​​位安装.我设置了对Oracle.DataAccess.dll的引用,我与Oracle的连接似乎正在运行.

当我构建项目(.net 4)时,我收到以下错误.该项目设置为构建Anycpu(我的工作站是64位,我们最终将部署到的服务器是32位)

‘正在构建的项目的处理器体系结构“MSIL”与参考Oracle.DataAcess,版本4.112.3.0,Culture = neutral,PublicKeyToken = 89b483f429c47342,processorArchitecture = x86,“x86”的处理器体系结构之间存在不匹配.这种不匹配可能会导致运行时故障.请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者使用与项目的目标处理器体系结构相匹配的处理器体系结构依赖引用

这只是一个vs.net警告,但有没有办法摆脱这个?

就像你说的那样,这只是一个警告.因为ODP.net不是“Anycpu”,所以警告表明您的依赖关系不会像您自己的应用程序那样适应主机操作系统.只要你的odp.net安装符合比特的os,你就可以了.但是编译器无法做出这样的决定,并试图让你有所了解.

我确实找到了一个connect article,其中包括一个可能的更改(我假设到proj文件)来禁用错误

<PropertyGroup>
<ResolveAssemblyWarnorErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnorErrorOnTargetArchitectureMismatch>
</PropertyGroup>

在任何情况下,只要您在服务器上安装的32位odp.net与您引用的64位odp.net版本相同(或者发布者策略已正确安装到您的服务器上),您的“Anycpu”应用程序就可以在您的服务器上正常运行重定向到更高版本).为了消除任何混淆,我通常将“复制本地”设置为“false”.换句话说,我针对特定版本的dll编译,但让它与GAC解析的内容(包括大多数odp.net安装包含的发布者策略)相反.

您还可以在您的开发机器上安装32位odp.net(理想情况下再次使用相同版本),以便运行/调试32位应用程序或使用Visual Studio中“随Oracle Studio Tools for Visual Studio”提供的集成工具工作室.

总而言之,这里不仅仅是满足于眼睛.如果您的应用程序实际上正在运行(这暗示着“它只是一个警告”),则为64位,而不是使用32位安装.我猜你的机器已经安装了64位版本(多个oracle家庭).

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...