已安装 .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 数据提供程序,但未进行机器范围的配置的主要内容,如果未能解决你的问题,请参考以下文章