.NET Core 3.1下Azure Function连接Azure SQL数据库报程序集加载错误
问题原因
你遇到的报错是依赖版本不匹配导致的:Microsoft.Data.SqlClient v4.0.0 依赖 System.Text.Encoding.CodePages 5.0.0.0 版本的程序集,.NET 5.0 框架默认内置了该版本的库,所以连接逻辑可以正常运行;但.NET Core 3.1 环境默认没有对应版本的依赖包,因此触发程序集加载失败的报错。
另外你的项目配置存在版本不匹配问题:Microsoft.NET.Sdk.Functions v4.0.1 对应 Azure Functions v4 运行时,原生适配的目标框架是 .NET 6,你当前用v4版本的Sdk搭配netcoreapp3.1的目标框架,也会加剧依赖冲突的概率。
解决方法
你可以选择以下任意一种方案处理:
- 方案1:显式安装匹配的依赖包
直接通过NuGet安装System.Text.Encoding.CodePages 5.0.0版本,不要安装更高版本,避免引入新的版本冲突。 - 方案2:降级Microsoft.Data.SqlClient版本
将Microsoft.Data.SqlClient的版本降级到3.1.x系列,该版本原生适配.NET Core 3.1,无需额外安装System.Text.Encoding.CodePages依赖。同时将Microsoft.NET.Sdk.Functions降级到3.x版本,和Azure Functions v3运行时、.NET Core 3.1目标框架匹配。 - 方案3:升级运行时(推荐长期方案)
.NET Core 3.1已经停止官方支持,你可以将项目目标框架升级到.NET 6(LTS版本),同时将AzureFunctionsVersion改为v4,适配现有的4.x版本Sdk,彻底解决依赖兼容问题。
验证步骤
修改依赖配置后,先清理解决方案,删除项目根目录下的bin、obj文件夹,再重新还原NuGet包后运行测试即可。
内容的提问来源于stack exchange,提问作者José Almeida
相关产品推荐
相关产品推荐

