当我构建项目(.net 4)时,我收到以下错误.该项目设置为构建Anycpu(我的工作站是64位,我们最终将部署到的服务器是32位)
‘正在构建的项目的处理器体系结构“MSIL”与参考Oracle.DataAcess,版本4.112.3.0,Culture = neutral,PublicKeyToken = 89b483f429c47342,processorArchitecture = x86,“x86”的处理器体系结构之间存在不匹配.这种不匹配可能会导致运行时故障.请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者使用与项目的目标处理器体系结构相匹配的处理器体系结构依赖引用
这只是一个vs.net警告,但有没有办法摆脱这个?
我确实找到了一个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家庭).