Oracle.DataAccess 2013 年 Visual Studio 无法选择
Oracle.DataAccess not available for selection in Visual Studio 2013
我最近用 Visual Studio 2013 设置了一个 Windows 8.1 64 位机器(可能是 32 位,至少它自己安装在 Program Files (x86) 中)。
我还安装了 Oracle 11.2.0.1 64 位客户端和 Oracle Data Provider for .NET。
当我执行 gacutil /l | 时findstr Oracle.DataAccess,我得到四个条目,包括以下内容:
Oracle.DataAccess, Version=2.112.1.0, ..., processorArchitecture=AMD64
但是,当我尝试添加程序集时,我在任何列表中都找不到 Oracle.DataAccess(不过,Oracle.Web 出现在程序集 -> 扩展下)。
我是否必须安装 32 位 Oracle 客户端(或简单的 32 位 ODP.NET),因为 Visual Studio 是 32 位的?如果是这样,该软件能否在具有 64 位应用程序和 64 位 Oracle 客户端(具有 64 位 ODP.NET)的 64 位系统上 运行?
是的,Visual Studio 是一个 32 位应用程序。
这取决于您的编译目标(x86
或 x64
或 AnyCPU
)您的应用程序 running/debugging 需要哪个 Oracle Client,无论来自 Visual Studio.
AnyCPU
将 运行 作为 64 位在 64 位上 Windows(最有可能的情况)
Oracle.DataAccess
没有出现,因为它是 64 位程序集,但你的 Visual Studio 是 32 位的。
有几种解决方法:
在 Add References
中使用 Browse
部分并手动定位 Oracle.DataAccess.dll
。通常您会在文件夹 %ORACLE_HOME%\odp.net\bin.x\
或 %ORACLE_HOME%\odp.net\bin\
中找到它
分别打开您的 *.csproj
。 *.vbproj
使用文本编辑器创建文件并手动添加引用,即在元素 <ItemGroup>
:
下添加这样的行
<Reference Include="Oracle.DataAccess">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
注意:Version=...
或 processorArchitecture=...
等属性不是必需的。您的应用程序将根据 selected 体系结构和目标 .NET 框架加载正确的 Oracle.DataAccess.dll
(前提是它已正确安装 - 也在您的目标机器上)
在您的计算机上同时安装 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
存在。两个 RegKey 仅包含 (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 时,您必须 select 目标 .NET Framework 4
或更高版本才能在参考列表中看到 ODP.NET 条目。
我最近用 Visual Studio 2013 设置了一个 Windows 8.1 64 位机器(可能是 32 位,至少它自己安装在 Program Files (x86) 中)。 我还安装了 Oracle 11.2.0.1 64 位客户端和 Oracle Data Provider for .NET。
当我执行 gacutil /l | 时findstr Oracle.DataAccess,我得到四个条目,包括以下内容:
Oracle.DataAccess, Version=2.112.1.0, ..., processorArchitecture=AMD64
但是,当我尝试添加程序集时,我在任何列表中都找不到 Oracle.DataAccess(不过,Oracle.Web 出现在程序集 -> 扩展下)。
我是否必须安装 32 位 Oracle 客户端(或简单的 32 位 ODP.NET),因为 Visual Studio 是 32 位的?如果是这样,该软件能否在具有 64 位应用程序和 64 位 Oracle 客户端(具有 64 位 ODP.NET)的 64 位系统上 运行?
是的,Visual Studio 是一个 32 位应用程序。
这取决于您的编译目标(x86
或 x64
或 AnyCPU
)您的应用程序 running/debugging 需要哪个 Oracle Client,无论来自 Visual Studio.
AnyCPU
将 运行 作为 64 位在 64 位上 Windows(最有可能的情况)
Oracle.DataAccess
没有出现,因为它是 64 位程序集,但你的 Visual Studio 是 32 位的。
有几种解决方法:
在
Add References
中使用Browse
部分并手动定位Oracle.DataAccess.dll
。通常您会在文件夹%ORACLE_HOME%\odp.net\bin.x\
或%ORACLE_HOME%\odp.net\bin\
中找到它
分别打开您的
下添加这样的行*.csproj
。*.vbproj
使用文本编辑器创建文件并手动添加引用,即在元素<ItemGroup>
:<Reference Include="Oracle.DataAccess"> <SpecificVersion>False</SpecificVersion> <Private>False</Private> </Reference>
注意:
Version=...
或processorArchitecture=...
等属性不是必需的。您的应用程序将根据 selected 体系结构和目标 .NET 框架加载正确的Oracle.DataAccess.dll
(前提是它已正确安装 - 也在您的目标机器上)在您的计算机上同时安装 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
存在。两个 RegKey 仅包含(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 时,您必须 select 目标
.NET Framework 4
或更高版本才能在参考列表中看到 ODP.NET 条目。