.NET Core 3.1类库实例化SqlConnection提示System.Data.SqlClient不支持当前平台如何解决
问题原因分析
报错
System.Data.SqlClient is not supported on this platform的核心原因是老版System.Data.SqlClient包对.NET Core 3.1的跨平台支持存在缺陷,微软已经停止对该包在.NET Core/.NET 5+环境下的功能更新,仅做安全维护,且该包默认仅支持Windows平台运行,非Windows平台或者跨平台类库项目引用时就会触发平台不支持的报错。
你的项目架构参考:
解决方案
优先使用官方推荐替代包
卸载项目中引用的System.Data.SqlClientNuGet包,替换为跨平台兼容的Microsoft.Data.SqlClientNuGet包,该包是微软官方推出的替代实现,完全兼容.NET Core 3.1版本,支持Windows、Linux、macOS全平台运行。
替换后仅需修改命名空间引用:
将代码头部的using System.Data.SqlClient;改为using Microsoft.Data.SqlClient;即可,原有SqlConnection相关的业务逻辑不需要做任何调整。必须保留
System.Data.SqlClient的兼容方案
如果有历史代码约束无法替换包,需要满足两个条件:
- 确认你的类库最终仅在Windows平台下运行,
System.Data.SqlClient不支持.NET Core环境下的非Windows运行场景 - 升级
System.Data.SqlClientNuGet包到4.8.3及以上版本,低版本对.NET Core 3.1的适配存在已知兼容性BUG
- 代码优化建议
你现有代码中throw new Exception(ex.Message);的写法会丢失异常的原始调用栈信息,不利于后续问题排查,建议直接改为throw;即可。
内容的提问来源于stack exchange,提问作者core_user
相关产品推荐
相关产品推荐


