如何查找引发异常的NuGet包?.NET5单元测试MissingMethodException排查
冲突包定位步骤
- 执行CLI命令
dotnet list package --include-transitive导出所有项目的全量依赖清单,筛选名称包含Microsoft.EntityFrameworkCore的包,核对Web主项目、单元测试项目、存放DbContext的类库项目(如有)的版本是否完全一致,重点关注Microsoft.EntityFrameworkCore.InMemory、Microsoft.EntityFrameworkCore.Relational这类容易被忽略的中转依赖版本。也可以在Visual Studio的解决方案NuGet包管理器中切换到「合并」标签,直接查看所有存在版本差异的依赖包,快速定位冲突项。 - 确认EF Core大版本和.NET版本匹配:.NET 5仅支持EF Core 5.x版本,若安装了EF Core 6.x及更高版本,会直接出现API不兼容问题。
- 核对
Microsoft.AspNetCore.Mvc.Testing包版本,该包提供WebApplicationFactory实现,版本必须和项目的.NET SDK版本保持一致,.NET 5对应包版本为5.x。 - 查看异常完整调用栈,定位调用
Rewrite方法的上游组件,确认该组件依赖的EF Core版本是否和项目中安装的版本匹配,常见冲突源为第三方EF Core扩展、仓储类封装库。
修复方案
- 所有项目统一显式安装同版本的EF Core相关包,.NET 5场景下推荐使用5.0.17(官方最后一个适配.NET 5的EF Core稳定版),显式安装指定版本的包可以覆盖掉不一致的中转依赖。
- 清理项目缓存:删除所有项目的
bin、obj文件夹,执行dotnet clean&&dotnet restore命令重新还原依赖,避免本地缓存的旧版本包干扰。
内容的提问来源于stack exchange,提问作者Rexiu Rexiowski
相关产品推荐
相关产品推荐

