.NET Framework4.6.1迁移至.NET6(LTS)的SqlClient与数据集类问题咨询
.NET Framework 4.6.1 迁移至 .NET 6 解决 System.Data 及 SqlClient 歧义问题
解决 DataSet/DataTable/DataRow 报错问题
.NET 6 中不再默认包含 System.Data 相关的数据集类(DataSet、DataTable 等),需要手动配置:
- 安装 System.Data.DataSetExtensions NuGet 包(官方 NuGet 源可直接检索到,无需手动下载 nupkg)
- 在项目级导入命名空间:打开项目属性 → 引用 → 导入,添加
System.Data,无需在每个文件单独写Imports System.Data
解决 Microsoft.Data.SqlClient 安装及歧义问题
1. 正常安装 Microsoft.Data.SqlClient
若 NuGet 管理器找不到包,先确认是否启用了官方 nuget.org 源,没问题的话直接在 Package Manager Console 执行:
Install-Package Microsoft.Data.SqlClient
若必须手动安装,下载对应版本的 nupkg 文件后,通过 NuGet 管理器的「本地包源」添加安装即可。
2. 消除 SqlCommand 歧义(BC37229 错误)
无需大量重命名代码,推荐两种简便方案:
方案一:项目级命名空间别名覆盖
- 打开项目属性 → 引用 → 导入
- 添加别名:
Imports SqlClient = Microsoft.Data.SqlClient - 移除项目中所有手动添加的
Imports System.Data.SqlClient(若存在)
这样原有代码里的SqlClient.SqlConnection、SqlClient.SqlCommand会自动指向 Microsoft.Data.SqlClient 下的类型,完全不用修改业务代码。
方案二:全局替换命名空间前缀
- 在每个 VB 文件顶部添加:
Imports MSql = Microsoft.Data.SqlClient - 使用 IDE 全局替换功能(如 Visual Studio 按 Ctrl+Shift+H),将所有代码中的
SqlClient.替换为MSql.
一次全局替换即可完成,耗时极少,彻底消除歧义。
额外建议
检查项目依赖的其他 NuGet 包,若有依赖 System.Data.SqlClient 的包,尽量升级到支持 Microsoft.Data.SqlClient 的版本,避免冗余引用带来的潜在问题。
内容的提问来源于stack exchange,提问作者steevi2307
相关产品推荐
相关产品推荐

