已安装 .NET 的 Oracle 数据提供程序,但未进行机器范围的配置

Posted

技术标签:

【中文标题】已安装 .NET 的 Oracle 数据提供程序,但未进行机器范围的配置【英文标题】:Oracle data provider for .NET has been installed without machine-wide configuration 【发布时间】:2017-06-20 18:59:51 【问题描述】:

我重新安装了 ODAC Oracle 但不断出现以下错误

“已安装适用于 .NET 的 Oracle 数据提供程序,但未在计算机范围内进行配置。但是,在全局程序集缓存中检测到适用于 .NET 的 Oracle 数据提供程序版本可能不兼容。请删除适用于.Net 从 Global Assembly Cache 重新启动 Visual Studio"

我应该关心这个警告吗?

【问题讨论】:

您安装了哪个版本的 ODAC?它与您安装的 Oracle 客户端匹配吗?您的 *.csproj 中分别有哪个参考。 *.vbproj 文件? 我意识到我有不同版本的 ODAC 和客户端。我删除它并重新安装相同的 11.2.0.3 版本,我得到:具有不变名称“Oracle.ManagedDataAccess.Client”的 ADO.NET 提供程序未在机器或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。我想我删除了太多......非常感谢帮助 你混合了一些东西,给我们看看你的代码 看起来不像是代码问题。我卸载了所有 Oracle 客户端,然后安装了 ODAC 12.0.2 并且它工作正常。我的意思是我没有收到任何警告,我可以使用代码优先和数据库优先方法修改数据库。似乎 ODAC 包由客户端驱动程序组成,还是我完全错了? 【参考方案1】:

我做了很多没有帮助的事情。 但是做了一件事: 在管理员模式下打开 Visual Studio 命令提示符 https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs

你必须使用gacutil /l 列出所有程序集 https://docs.microsoft.com/en-us/dotnet/framework/tools/gacutil-exe-gac-tool

然后删除所有包含 oracle 的条目:

gacutil /u [assembly name]

您可以从之前的列表中获取程序集名称。只需在第一个逗号之前使用该术语(例如Oracle.ManagedDataAccess

之后我打开 Visual Studio,错误消息消失了。 发生的事情是,machine.config 中有我需要删除的条目。您必须删除哪一个会在调试代码时显示错误。

希望它会有所帮助。

【讨论】:

以上是关于已安装 .NET 的 Oracle 数据提供程序,但未进行机器范围的配置的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 数据提供程序未显示为选项

C# 访问Oracle数据库

ADO.NET操作Oracle问题

安装Oracle提示:[INS-35206] 目录已在使用

C#.net 连接到 Oracle 数据库错误

为啥安装oracle11g的时候总是应用程序错误