Oracle.DataAccess不匹配错误

时间:2013-02-01 01:05:59

标签: oracle odp.net

我为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警告,但有没有办法摆脱这个?

3 个答案:

答案 0 :(得分:17)

就像你说的那样,这只是一个警告。因为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位应用程序或使用随“Oracle Developer Tools for Visual Studio”提供的集成工具在Visual Studio中。

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

答案 1 :(得分:0)

  

这只是一个vs.net警告但是有什么方法可以摆脱它   此?

我相信没有办法摆脱这种情况,因为你想在32位机器上部署并在64位上创建。这只是一个警告,通知您驱动程序可能存在错误。如果你现在正在做什么,没什么好担心的。

你应该期待它 - 你在64位架构上使用32位库。

答案 2 :(得分:0)

另一种解决方案:

下载ODAC 11.2 Release 5 (11.2.0.3.20)并将编译器设置为x86。我100%肯定会清除所有与oracle相关的警告。 将名称空间设置为:using System.Data.Odbc;

然后建立数据库连接。