Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 32位和64位的ODP.NET_C#_.net_Oracle_Ado.net_Odp.net - Fatal编程技术网

C# 32位和64位的ODP.NET

C# 32位和64位的ODP.NET,c#,.net,oracle,ado.net,odp.net,C#,.net,Oracle,Ado.net,Odp.net,我正在开发使用ODP.NET连接到Oracle DB的应用程序。我想要一个32位和64位机器的版本。问题是,我不知道如何使用anycpu目标构建projetc,似乎它要求目标与ODP驱动程序版本相同。所以这意味着我需要对同一个应用程序的版本进行测试,一个32位,另一个64位。但在使用MS.NET Oracle客户端(System.Data.OracleClient)时,同样的问题并没有出现。使用ODP.NET是否有与MS.NET客户端相同的行为 任何C#项目的默认选项都是它将在x64和x86操作

我正在开发使用ODP.NET连接到Oracle DB的应用程序。我想要一个32位和64位机器的版本。问题是,我不知道如何使用anycpu目标构建projetc,似乎它要求目标与ODP驱动程序版本相同。所以这意味着我需要对同一个应用程序的版本进行测试,一个32位,另一个64位。但在使用MS.NET Oracle客户端(System.Data.OracleClient)时,同样的问题并没有出现。使用ODP.NET是否有与MS.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依赖于它,当然它不能是“任何CPU”

理论上,ODP.NET可以在.NET代码中检测当前执行的“位性”,然后相应地动态加载32位或64位本机DLL,但这不是它当前的实现方式


甲骨文公司目前正在实施一项计划。但是,我们不得不为每个“位”进行单独的构建。

几年后才更新:Oracle发布了托管ODP.NET客户端,因此不再需要在.NET应用程序中使用x64/x86。您可以在Oracle网站上找到更多信息:

ODP.NET是专门为32位或64位平台构建的。他们可以为任何CPU构建一个库,允许它在32位或64位进程中使用。然而,正如Branko Dimitrijevic所提到的,ODP.NET托管dll在幕后使用本机库。本地库是特定于平台的;因此,需要Oracle为每个平台构建单独的ODP.NET库。没有其他选择。

您不需要单独构建<代码>任何CPU都可以,只要部署目标只有一个oracle客户端,并且您正在GAC中引用DLL。例如,我为64位服务器构建web应用程序。我的项目引用了GAC的32位数据访问库,但当我部署时,它在GAC中查找同一个库并找到64位副本。。。注意:ODP.NET 12.*不支持Oracle 9数据库(仅支持10.2或更高版本),不幸的是,它们仍将托管程序集编译为显式x86或x64。因此,当使用AnyCPU时,我们可以期待更多相同处理器架构的警告/错误。这会给现有答案增加什么?“正确的方式”!=“甲骨文迫使你让它工作的方式”。当你向db收取许可费时,两倍的发行量是可以管理的,但是我们大多数人没有这样的资本。