我为Visual Studio2012安装了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”的处理器体系结构不匹配。此不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器体系结构,以便使项目和引用之间的处理器体系结构保持一致,或者使引用依赖于与项目的目标处理器体系结构匹配的处理器体系结构“
这只是一个vs.net警告,但是有什么方法可以摆脱它吗?
发布于 2013-02-01 18:08:34
就像你说的这只是个警告。因为ODP.net不是"AnyCPU“,所以警告指出您的依赖项不能像您自己的应用程序那样适应主机操作系统。只要您的odp.net安装与os的位数相匹配,就可以了。但是编译器无法做出这个决定,并试图给你一个提示。
我确实找到了一个connect article,其中包含一个可能的更改(我假设是对项目文件),以禁用该错误:
<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>
在任何情况下,只要您安装在服务器上的32位odp.net与您引用的64位odp.net的版本相同(或者正确安装了发行者策略以重定向到更高版本),您的"AnyCPU“应用程序就可以在您的服务器上正常运行。为了消除混淆,我通常将“false”的引用设置为"Copy Local“。换句话说,我针对dll的特定版本进行编译,但让它根据它从GAC (包括大多数odp.net安装所包含的发布者策略)中解析出的内容运行。
您还可以在您的开发机器上安装32位odp.net (理想情况下还是相同的版本),以便运行/调试32位应用程序,或者使用Visual Studio中“与Oracle Developer Tools for Visual Studio”一起提供的集成工具。
总而言之,这里有更多的东西。如果你的应用程序实际上正在运行(“这只是一个警告”),那么它就没有使用你的32位安装。我猜您的机器已经安装了64位版本(多个oracle主目录)。
发布于 2014-08-26 12:49:16
另一种解决方案:
下载ODAC 11.2 Release 5 (11.2.0.3.20)并将编译器设置为x86。我100%确定它会清除所有与oracle相关的警告。将命名空间设置为:using System.Data.Odbc;
然后建立一个数据库连接。
发布于 2013-02-01 09:16:05
这只是一个vs.net警告,但是有什么方法可以摆脱它吗?
我相信没有办法摆脱它,因为你想在32位机器上部署,而你在64位机器上创建。这只是一个警告,告诉你司机可能出了什么问题。如果你知道你在做什么,那就没什么好担心的了。
您应该预料到这一点--您在64位架构上使用了32位库。
https://stackoverflow.com/questions/14638067
复制相似问题