Azure Function使用func start启动时报QueryableMethods类型初始化器异常
问题原因
你遇到的报错本质是版本不匹配导致的依赖冲突:你使用的azure-functions-core-tools@4.x和项目依赖的Functions v3 SDK(Microsoft.NET.Sdk.Functions 3.0.13)存在程序集版本差异,宿主加载EF Core程序集时出现重复方法匹配,触发了Sequence contains more than one matching element报错。Visual Studio启动时会自动调用和项目SDK匹配的v3版本运行时,因此运行无异常。
可行解决方案
- 方案1:降级全局Azure Functions Core Tools到v3版本
执行npm命令全局安装v3版本工具:npm install -g azure-functions-core-tools@3,安装完成后重新执行func start即可正常运行。 - 方案2:升级函数应用到v4版本适配Core Tools v4
修改FunctionApp.csproj配置:- 将目标框架改为
net6.0 - 升级
Microsoft.NET.Sdk.Functions到4.2.0及以上版本 - 升级
Microsoft.Azure.WebJobs.Extensions.ServiceBus到5.x兼容版本
所有依赖版本对齐后重新构建项目,再执行func start即可。
- 将目标框架改为
- 方案3:强制保留项目依赖版本不被宿主覆盖
在FunctionApp.csproj的第一个PropertyGroup节点下添加配置:
该配置会禁止Azure Functions运行时用自带的程序集版本替换项目显式引用的版本,规避EF Core的程序集加载冲突,修改后重新构建执行即可。<FunctionsPreserveDependencies>true</FunctionsPreserveDependencies>
内容的提问来源于stack exchange,提问作者Józef Podlecki
相关产品推荐
相关产品推荐

