我最近用Visual Studio 2013设置了一个Windows 8.1 64位机器(可能是32位,至少它安装在Program Files(x86)上)。 我还安装了带有Oracle Data Provider for .NET的Oracle 11.2.0.1 64位客户端。
当我做gacutil / l |时findstr Oracle.DataAccess,我得到四个条目,包括以下内容:
Oracle.DataAccess, Version=2.112.1.0, ..., processorArchitecture=AMD64
但是,在尝试添加程序集时,我无法在任何列表中找到Oracle.DataAccess(尽管如此,Oracle.Web出现在Assemblies-> Extensions下)。
我是否必须安装32位Oracle客户端(或简称32位ODP.NET),因为Visual Studio是32位?如果是这样,软件是否能够在64位应用程序和64位Oracle客户端(64位ODP.NET)的64位系统上运行?
答案 0 :(得分:8)
是的,Visual Studio是一个32位应用程序。
这取决于您的编译目标(x86
或x64
或AnyCPU
)运行/调试应用程序所需的Oracle客户端,无论Visual Studio的体系结构如何。
AnyCPU
将在64位Windows上运行64位(最有可能的情况)
Oracle.DataAccess
没有出现,因为它是64位程序集,但Visual Studio是32位。
有几种解决方案:
在Add References
中使用Browse
部分并手动找到Oracle.DataAccess.dll
。通常,您会在文件夹%ORACLE_HOME%\odp.net\bin\2.x\
或%ORACLE_HOME%\odp.net\bin\4\
打开*.csproj
,分别为。带有文本编辑器的*.vbproj
文件并手动添加引用,即在元素<ItemGroup>
下添加如下行:
<Reference Include="Oracle.DataAccess">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
注意:不需要Version=...
或processorArchitecture=...
等属性。您的应用程序将加载正确的Oracle.DataAccess.dll
,具体取决于所选的体系结构和目标.NET框架(前提是它已正确安装 - 也在目标计算机上)
在您的计算机上安装x86和x64 Oracle客户端。以下是如何执行此操作的说明:Stack Overflow - Install Oracle x86 and x64
使用Oracle的ODP.NET托管驱动程序。您可以从此处下载:64-bit Oracle Data Access Components (ODAC) Downloads这也适用于32位应用程序。
打开注册表编辑器并检查RegKey HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\ODP.NET
是否支持。 HKLM\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\ODP.NET
存在。两个RegKeys仅包含(Default)
值和Oracle.DataAccess.dll
的位置。
示例:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\ODP.Net]
@="c:\\oracle\\product\\11.2\\Client_x86\\odp.net\\bin\\2.x"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\ODP.Net]
@="c:\\oracle\\product\\11.2\\Client_x86\\odp.net\\bin\\4"
在编译选项中检查目标框架。安装ODP.NET版本4.x后,必须选择目标.NET Framework 4
或更高版本才能在参考列表中查看ODP.NET条目。