升级VS2022 17.2.4(x64)后Durable Functions本地异常及NuGet包冲突
问题根因
该异常由NuGet包跨大版本依赖不兼容触发,和VS2022版本无直接关联:
- 你当前引用的
Microsoft.Azure.WebJobs.Extensions.DurableTask 2.7.2,内置依赖为5.x系列版本的Microsoft.Azure.WebJobs.Extensions.Storage存储扩展 - 为了支持Queue Trigger手动安装的
Microsoft.Azure.WebJobs.Extensions.Storage 4.0.5属于上一个大版本,和Durable Task扩展依赖的存储扩展存在程序集加载冲突 - VS检测到项目中存在同包跨大版本的不可兼容依赖时,会自动在解决方案资源管理器的依赖列表中隐藏冲突的包引用,这就是你观察到的「新增Queue Trigger类DurableTask包消失、删除类后包恢复显示」现象的本质——新增Queue Trigger的操作触发VS自动拉取旧版4.x存储扩展依赖,命中了冲突隐藏规则。
解决方法
按照以下步骤调整包引用即可修复:
- 先卸载项目中手动安装的
Microsoft.Azure.WebJobs.Extensions.Storage 4.0.5包 - 将
Microsoft.Azure.WebJobs.Extensions.DurableTask升级到2.9.x以上的稳定版本,该版本完全兼容.NET 6进程内模型的Azure Functions V4运行时,自带的5.x版本存储扩展原生支持Queue Trigger能力,无需额外手动安装低版本存储包 - 清理本地NuGet缓存后重新生成项目,可在VS开发人员命令提示符执行以下命令完成缓存清理:
dotnet nuget locals all --clear
- 重新生成完成后再新增Queue Trigger类,不会再出现包丢失、本地运行失败的问题。
补充说明:如果你使用的是独立工作进程(Isolated Worker)模型开发Functions,不要直接安装WebJobs系列的扩展包,需要对应安装
Microsoft.Azure.Functions.Worker.Extensions.Storage、Microsoft.Azure.Functions.Worker.Extensions.DurableTask包,保持版本和Worker SDK主版本匹配即可。
内容的提问来源于stack exchange,提问作者user4880742
相关产品推荐
相关产品推荐

