我正在开发使用ODP.NET连接到Oracle DB的应用程序。我想为32位和64位机器都有一个版本。问题是,我无法弄清楚如何用目标制作projetc,似乎它要求目标与ODP驱动程序版本相同。所以这意味着我需要为32位版本和32位版本创建相同的应用程序。但使用MS .NET Oracle客户端(System.Data.OracleClient)时,同样没有问题。有没有办法使用ODP.NET和MS .NET客户端一样使用相同的行为?32位和64位的ODP.NET
回答
任何C#项目的默认选项都可以在x64和x86操作系统上使用。
因此,这意味着我需要有相同的应用程序版本 一个32位和其他64位。但同样没有问题,而使用MS .NET Oracle客户端(System.Data.OracleClient)的 。
这是预期的....您需要发布x86版本和x64版本,请注意,x86应用程序无法引用x64程序集,反之亦然。
Microsoft引用的原因不同,是因为它默认情况下是.NET Framework的一部分。
我无法下载我所在的文件,我确实相信,ODP.NET有一个x86程序集和一个x64程序集。
正确的方法是发布程序的x86版本和x64版本。
根本原因是ODP.NET对native OCI DLLs的依赖,当然这不能是“任何CPU”。
从理论上讲,ODP.NET可以在.NET代码中检测到当前执行的“比特性”,然后相应地动态加载32位或64位本机DLL,但这不是目前实现的方式。
Oracle公司目前正在实施fully managed provider。但是until then,我们坚持不得不为每个“比特级”做单独的构建。
你不需要单独构建。只要部署目标只有一个oracle客户端,并且您正在引用GAC中的DLL,则任何CPU都可以。例如,我为64位服务器构建Web应用程序。我的项目引用了来自GAC的32位数据访问库,但是当我部署时,它在GAC中查找相同的库并找到64位副本......并且它运行完美。 –
只是几年后更新:Oracle发布了托管的ODP.NET客户端,因此不需要再花费.NET应用程序中的x64/x86。您可以在Oracle网站上找到更多信息:http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
注意:ODP.NET 12. *不支持Oracle 9数据库(只有10个。2或更新版本) – surfen
不幸的是,他们仍然将受管程序集编译为显式x86或x64。因此在使用AnyCPU时,我们可以期待更多相同的处理器体系结构警告/错误 – StingyJack
ODP.NET专为32位或64位平台而构建。他们可以为AnyCPU构建一个单独的库,这将允许它在32位或64位进程中使用。然而,正如Branko Dimitrijevic暗示的那样,ODP.NET管理的dll在幕后使用本地库。本地库是特定于平台的;因此需要Oracle为每个平台构建独立的ODP.NET库。没有替代。
这对现有答案有什么影响? – BradleyDotNET
- 1. 32位和64位CPU/OS
- 2. C# - 在32位和64位
- 3. 64位debian和32位酒
- 4. 32位和64位性能
- 5. JVM和Glassfish的32位和64位
- 6. XOR高32位,低32位,64位数
- 7. 64位的32位除法
- 8. 32位和64位dll的windows服务
- 9. 注册32位和64位的DLL
- 10. asp.net中的64位和32位机器
- 11. PHP的32位和64位平台
- 12. 32位和64位的Java类路径
- 13. Windows 7(64位)上的IIS 7和Ms Access 32位32位
- 14. 什么是适合32位和64位“32位”的术语
- 15. ODP.NET for Windows 2003 Server 64位
- 16. Java和Eclipse - 32与64位
- 17. System.Data.Sqlite.dll 32胜和64位C#
- 18. Xcode&64位&32位问题
- 19. 64位weblogic 32位oracle DB
- 20. 64位OS/32位进程
- 21. 32位64位兼容
- 22. 从32位变为64位
- 23. SharePoint 64位或32位
- 24. 32位OpenFileDialog - > 64位System32?
- 25. SHGetFolderPath()32位与64位
- 26. Java JDK 32位与64位
- 27. 从32位到64位
- 28. 在32位和64位平台上总是处理32位?
- 29. SetWindowLong函数/ GetWindowLong和32位/ 64位CPU
- 30. Powershell问题 - 32位和64位
“正确的方式”!=“甲骨文迫使你使它工作的方式”。当您收取他们为数据库执行的许可费用时,两次释放足迹可能是可管理的,但我们大多数人没有这种资本。 – StingyJack