WebAPI项目引入特定版本Microsoft.Extensions.Logging后报MissingMethodException如何解决
异常根因说明
该MissingMethodException由Microsoft.Extensions.Logging包与项目ASP.NET Core框架版本不匹配导致:
.NET 6正式版对LoggerMessage.Define方法做了API更新,新增了携带第4个布尔参数(控制是否启用日志作用域)的重载,而版本低于6.0.0-preview6.*、或属于6.0.0-rc.*预览系列的Microsoft.Extensions.Logging包未包含该重载。IEndpointRouteBuilder.MapControllers内部的日志逻辑会调用该新增重载,当加载的Logging包版本过低时就会触发方法缺失异常。
无需降级的可行解决方案
- 统一所有Microsoft.Extensions系列依赖包版本:确保所有
Microsoft.Extensions.*开头的NuGet包版本与项目目标.NET框架版本完全对齐,例如目标框架为.NET 6则统一使用6.0.0及以上正式版,目标框架为.NET 7则统一使用7.x.x正式版,禁止混合使用预览版、RC版与正式版的基础组件。 - 强制覆盖传递依赖的低版本包:如果异常由第三方依赖间接引入的低版本Logging包触发,可在项目
.csproj文件中显式添加对应正式版的Logging包引用,NuGet会优先采用显式指定的版本覆盖传递依赖的低版本,示例配置如下:
<ItemGroup> <PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" /> </ItemGroup>
- 移除冗余的Logging包引用:.NET Core 3.0及以上版本的WebAPI项目默认已内置
Microsoft.Extensions.Logging组件,无特殊版本需求的情况下可以直接删除项目中手动添加的Logging包引用,使用框架自带的版本即可彻底避免版本冲突。
修改完成后建议执行dotnet nuget locals all --clear清空本地NuGet缓存,再重新执行dotnet restore还原依赖,避免旧缓存导致问题复现。
内容的提问来源于stack exchange,提问作者Vlad Kisly
相关产品推荐
相关产品推荐

