ODP.NET适用于32位和64位

NDe*_*per 6 .net c# oracle ado.net odp.net

我正在开发使用ODP.NET连接到Oracle DB的应用程序.我想为32位和64位机器提供一个版本.问题是我无法弄清楚如何使用anycpu目标构建projetc ,似乎它要求目标与ODP驱动程序版本相同.因此,这意味着我需要同一个应用程序的版本,一个用于32位,另一个用于64位.但使用MS .NET Oracle客户端(System.Data.OracleClient)时同样没问题.有没有办法在MS .NET客户端上使用ODP.NET具有相同的行为?

But*_*aur 8

几年后更新:Oracle发布了托管的ODP.NET客户端,因此不再需要在.NET应用程序中使用x64/x86.您可以在Oracle网站上找到更多信息:http://www.oracle.com/technetwork/topics/dotnet/index-085163.html


Bra*_*vic 6

根本原因是ODP.NET依赖于本机 OCI DLL,当然这不是"任何CPU".

从理论上讲,ODP.NET可以检测.NET代码中当前执行的"bit-ness",然后相应地动态加载32位或64位本机DLL,但这不是当前实现的方式.

Oracle公司目前正在实施完全托管的提供商.但在那之前,我们不得不为每个"bit-ness"做单独的构建.


Sec*_*und 1

任何 C# 项目的默认选项都是它可以在 x64 和 x86 操作系统上运行。

所以这意味着我需要同一应用程序的版本,一个适用于 32 位,另一个适用于 64 位。但使用 MS .NET Oracle 客户端 (System.Data.OracleClient) 时,同样没有问题。

这是预期的......您需要发布 x86 版本和 x64 版本,请注意,x86 应用程序无法引用 x64 程序集,反之亦然。

Microsoft 参考不同的原因是它默认是 .NET Framework 的一部分。

我无法下载我所在的文件,我确实相信 ODP.NET 有 x86 程序集和 x64 程序集。

正确的方法是发布你的程序的x86版本和x64版本。