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 位应用程序。

这取决于您的编译目标(x86x64AnyCPU)您的应用程序 running/debugging 需要哪个 Oracle Client,无论来自 Visual Studio.

AnyCPU 将 运行 作为 64 位在 64 位上 Windows(最有可能的情况)

Oracle.DataAccess 没有出现,因为它是 64 位程序集,但你的 Visual Studio 是 32 位的。

有几种解决方法:

  1. Add References 中使用 Browse 部分并手动定位 Oracle.DataAccess.dll。通常您会在文件夹 %ORACLE_HOME%\odp.net\bin.x\%ORACLE_HOME%\odp.net\bin\

  2. 中找到它
  3. 分别打开您的 *.csproj*.vbproj 使用文本编辑器创建文件并手动添加引用,即在元素 <ItemGroup>:

    下添加这样的行
    <Reference Include="Oracle.DataAccess">
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    

    注意:Version=...processorArchitecture=... 等属性不是必需的。您的应用程序将根据 selected 体系结构和目标 .NET 框架加载正确的 Oracle.DataAccess.dll(前提是它已正确安装 - 也在您的目标机器上)

  4. 在您的计算机上同时安装 x86 和 x64 Oracle 客户端。以下是如何执行此操作的说明:Stack Overflow - Install Oracle x86 and x64

  5. 使用来自 Oracle 的 ODP.NET 托管驱动程序。您可以从这里下载它:64-bit Oracle Data Access Components (ODAC) Downloads 这也适用于 32 位应用程序。

  6. 打开您的注册表编辑器并检查 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"
    
  7. 在编译选项中检查你的目标框架。当您安装 ODP.NET 版本 4.x 时,您必须 select 目标 .NET Framework 4 或更高版本才能在参考列表中看到 ODP.NET 条目。