VS2019 ASP.NET提示MySqlClient数据提供程序未在系统配置中找到
我刚完成Visual Studio 2019的安装,同时为该环境安装了MySQL Connector 8.0.29与MySQL for Visual Studio 1.2.10组件。
新建MySQL数据库连接时,连接测试显示成功,但点击「下一步」按钮时弹出如下错误:
"The data provider "MySqlClient" could not be found in the system configuration. Unable to find the requested .NET Framework Data Provider. It may not be installed."(系统配置中找不到数据提供程序“MySqlClient”,无法找到请求的.NET Framework数据提供程序,该程序可能未安装)
请问ASP.NET环境下有什么方法可以修复该问题?
我已尝试修改web.config配置文件,但问题仍未解决。
错误提示界面参考下图:
该报错和项目内的web.config配置没有关系,VS的数据源连接向导运行在VS自身进程下,只会读取系统全局的.NET Framework配置,找不到MySqlClient提供程序说明全局配置里的注册信息缺失或失效,按以下步骤操作即可解决:
1. 先排查安装顺序和版本兼容问题
这是90%同类问题的诱因:
- 两个组件的安装顺序不能乱:必须先装MySQL for Visual Studio 1.2.10,再装MySQL Connector/NET。如果之前先装了Connector再装VS插件,插件不会自动扫描到已装的Connector,自然无法完成提供程序注册。这种情况直接去控制面板把两个MySQL相关组件都卸载,重启后按正确顺序重装即可。
- 注意版本坑:MySQL for Visual Studio 1.2.10最高只支持到Connector/NET 8.0.28,8.0.29版本改了提供程序的注册逻辑,1.2.10版本的插件识别不了,别用8.0.29,直接降到8.0.28就好。
2. 手动补全全局配置注册
如果重装后还是报错,就手动改系统配置文件:
- 找到两个machine.config文件,32位和64位的都要改,路径分别是:
- 32位运行时配置:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config - 64位运行时配置:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
- 32位运行时配置:
- 改之前先把这两个文件备份一份,防止改错了导致.NET运行层出问题。
- 打开文件找到
<DbProviderFactories>节点,先把里面和MySqlClient相关的旧条目、重复条目都删掉,再加入下面的配置:
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".NET Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
3. 清VS缓存重启
全部改完之后关掉所有开着的VS窗口,在资源管理器地址栏输入%LocalAppData%\Microsoft\VisualStudio\回车,找到名字是16.0_加一串随机字符的文件夹(这是VS2019的实例目录),进去把ComponentModelCache这个文件夹整个删掉,再重新打开VS。
之后重新建MySQL连接,测试通过后点下一步就不会再弹这个错了。
注意:全局配置修好之后,别在自己项目的web.config里重复加上面的DbProviderFactories配置,不然跑项目的时候会报“已存在相同键”的错误,多此一举。
内容的提问来源于stack exchange,提问作者Ben Tsang

