题
我可以问错了问题在这里,我愿意改变它如果是这样。
我有一个项目,正在使用的Microsoft.NET Oracle提供者(我们的计划是改变耗氧潜能但我们还没有这样做)。
我试图让这个项目建立在一个窗户2008年(64)建立服务器。它建立的只是好的,但我们单元的测试失败,当他们打的东西在Oracle数据库。
我最初安装的32位oracle9i客户,这是我们目前的使用对我们的winxp dev框及先前于2003年建立的服务器。但现在这得到的消息,如:试图载Oracle图书馆客户扔BadImageFormatException.这个问题时将会发生运行中的64位模式的32位Oracle客户部件的安装。
我们试图汇编的x86平台,但这并不改变错误信息。
我现在11g64位客户安装的但我得到消息说系统。数据。OracleClient需要Oracle客户机软件版本8.1.7或更大。
那么,什么Oracle安装我应该可以使用?
编辑:
我能得到这个工作。原来这是试验引起的问题,通过迫使关于运行中的32位的模式: http://geekswithblogs.net/Lance/archive/2006/12/28/102191.aspx 我能得到检测工作使用的旧的32位的驱动。这将是一个蹩脚的问题的答案,所以我不用它,但将很乐意奖项的正确答案任何人将在某些良好的信息转到Oracle64位的驱动。
解决方案
当涉及到Oracle,我喜欢用 Oracle即时的客户 :
- 你不需要安装任何东西上述目标的机器(其中包括dev框!).
- 你可以确保应用程序的运行与具体客户你挑选。
- 你甚至可以很容易地多个应用程序的工作与不同客户的版本上相同的计算机。
- 作为一个缺点,它增加了一个显着的重要您的应用程序(~19Mb最小)。
检查 什么是最低的客户占所需的连接C#到Oracle数据库? 更多的信息。要知道如何设置一些工作室项目,该项目将工作x86以及64机,检查我的博客 Oracle即时客户在Visual Studio.
其他提示
我加入一个新的答案,因为这种下降(2012年)的耗氧潜能管理的代码是可用的。看看 这个链接 更多的信息。这对我们来说是高度稳定和我们使用的是它在生产、主要是因为这些原因:
- 没有安装(外的实体框架中的一个简单的登记注册是必要的)
- 这是比较小的托管的版本,占地面积大约为6。
- 它不是"点敏感",即任何CPU将最后的工作中与消耗臭氧潜能值:)
- 更直观的映射C#类型 <->Oracle类型(而且这解决了一些问题EF和模型生成的数据库)
- 支持EZCONNECT(所有版本的非受控耗氧潜能没有)的,即没有更多的tnsnames.ora麻烦。
但是,为过渡到64位下载的管理消耗臭氧潜能值的驱动改变的 Oracle.DataAccess
参考 Oracle.ManagedDataAccess
并重新编译:)
我觉得消息的“System.Data.OracleClient的需要Oracle客户端软件版本8.1.7或更高” 的是类似的“Oracle客户端没有安装,安装,但是未找到或安装,但它的需要8.1.7或更高的“
检查注册表编辑器如果值是正下方的关键是:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraOdac11g_home1
在哪里OraOdac11g_home1
取决于Oracle主名称为您的安装。
另外,尝试通过Visual Studio连接,看是否其可能的。
我有这可能涉及到你所看到的问题。
我最初有我的机器和.Net Oracle.DataAccess组件版本号为10.2.0.100上安装的只是Oracle 10g客户端 - 这是在.NET运行时1.0.3705
我安装ODP.Net和Oracle.DataAccess组件版本现在是v2.102.2.20并运行在.NET运行时V2.0.50727 - 我不能找到参考,为什么甲骨文这样做 - 这是事做将版本号符合运行库版本
我花了一天的工作了这一点。我们不使用11g客户端还没有,我还没有使用的客户端8I的年龄,所以我不知道版本号会是怎样为这些客户端,但我会检查它,如果我是你什么。
在短,甲骨文背跟踪其可让您11克组件的组件版本号出现外的日期,而不是到Oracle 8i的部件
我发现很多次的错误“需要Oracle客户端软件版本8.1.7或更高”是出了名的误导性的错误。从遥远的记忆我似乎记得,这通常表示一个文件IO权限问题。我想这可能是ASP.NET工作进程(或任何标识的应用程序在其下运行),需要某种形式的读或写权限的Oracle客户端文件夹层次...
文件夹这可以是环境中的多个Oracle主的一个原因。在构建系统删除旧版本的Oracle家。尝试用单家再次产生构建。有一些问题与9i的版本ODP.NET和10G / 11G连接