You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未使用Microsoft.Data.SqlClient却在VS2022中遭遇可信证书错误

问题分析与解决方案

一、未手动引用却出现Microsoft.Data.SqlClient的原因

即使项目未直接引用Microsoft.Data.SqlClient,以下场景会导致该驱动被加载:

  • Visual Studio设计时工具依赖:VS 2022的类型化数据集设计器、EF6模型创建向导(新增模型时),底层已切换为Microsoft.Data.SqlClient来连接数据库读取元数据,这和项目运行时使用的System.Data.SqlClient完全独立。调试时程序用的是项目配置的驱动,而设计工具用的是VS内置的Microsoft.Data.SqlClient。
  • 传递依赖:项目中某些NuGet包(比如EF6的扩展库、第三方数据工具包)可能间接引用了Microsoft.Data.SqlClient,设计时工具会加载这些传递过来的程序集。
  • GAC全局程序集缓存:Microsoft.Data.SqlClient可能被安装到了系统GAC中,VS设计工具会优先从GAC加载该驱动,无需项目显式引用。

二、针对性解决办法

1. 设计时连接字符串手动配置

修改类型化数据集或创建EF模型时,在弹出的数据库连接配置对话框中:

  • 进入“高级”设置,勾选「信任服务器证书」(对应trustServerCertificate=true),同时设置「加密」为False。
  • 不要仅修改项目配置文件中的连接字符串,因为设计工具使用的是临时生成的连接参数,和项目运行时配置不共享。

2. 强制VS设计工具禁用加密

修改VS的配置文件(devenv.exe.config),路径示例:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE(根据你的VS版本替换Community为Professional或Enterprise):
在<configuration>节点下添加以下配置:

<system.data>
  <DbProviderFactories>
    <remove invariant="Microsoft.Data.SqlClient" />
    <add name="Microsoft Data SqlClient" invariant="Microsoft.Data.SqlClient" description=".NET Framework Data Provider for SqlServer" type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient" />
  </DbProviderFactories>
</system.data>
<appSettings>
  <add key="Microsoft.Data.SqlClient.Encrypt" value="false" />
</appSettings>

修改后重启VS,设计工具会默认使用Encrypt=False连接数据库。

3. 清理GAC中的冲突版本

打开命令提示符(管理员权限),执行以下命令查看GAC中的Microsoft.Data.SqlClient版本:

gacutil /l Microsoft.Data.SqlClient

如果存在多个版本,卸载非必要的版本:

gacutil /u Microsoft.Data.SqlClient, Version=xxx.xxx.xxx.xxx, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5

替换Version为具体版本号。

4. 回退VS版本

如果确认是VS 17.9.6的版本bug,可暂时回退到17.8.x系列稳定版本,待微软修复后再升级。

内容的提问来源于stack exchange,提问作者reuben42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:43:20