【问题标题】:Oracle.DataAccess not available for selection in Visual Studio 2013Oracle.DataAccess 在 Visual Studio 2013 中无法选择
【发布时间】:2015-04-16 17:58:21
【问题描述】:

我最近使用 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 下)。

由于 Visual Studio 是 32 位,我是否必须安装 32 位 Oracle 客户端(或只是 32 位 ODP.NET)?如果是这样,该软件是否能够在带有 64 位应用程序和 64 位 Oracle 客户端(带有 64 位 ODP.NET)的 64 位系统上运行?

【问题讨论】:

  • 这是一个非常旧的 ODP.NET 版本。如果您正在进行新开发,请考虑升级到 12.1.0.2。是的,它与 v11 数据库兼容,并且可以与旧版 Oracle 客户端存在于同一台机器上。为了与 Visual Studio Designers 和 Server Explorer 集成,您还需要安装“Oracle Developer Tools for Visual Studio”,并且只有较新的版本才能与 VS 2013 一起使用。

标签: oracle visual-studio-2013 windows-8.1 odp.net


【解决方案1】:

是的,Visual Studio 是一个 32 位应用程序。

这取决于您的编译目标(x86x64AnyCPU)运行/调试应用程序所需的 Oracle 客户端,无论 Visual Studio 的体系结构如何。

AnyCPU 将在 64 位 Windows 上以 64 位运行(很可能是这种情况)

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

有几种解决方案:

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

  2. 中找到它
  3. 打开你的*.csproj,分别。带有文本编辑器的*.vbproj 文件并手动添加引用,即在元素<ItemGroup> 下添加这样的行:

    <Reference Include="Oracle.DataAccess">
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    

    注意:Version=...processorArchitecture=... 等属性不是必需的。您的应用程序将根据所选架构和目标 .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 版后,您必须选择目标 .NET Framework 4 或更高版本才能在参考列表中看到 ODP.NET 条目。

【讨论】:

  • 感谢您提供详细而完整的答案。
  • 这不是我的选择 - 向 Microsoft 投诉。当您从一开始就正确安装 Oracle 时,默认情况下应该没问题。
猜你喜欢
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
  • 2015-08-05
相关资源
最近更新 更多