添加未引用项目引用后触发System.MissingMethodException问题排查
排查.NET 6类库引用后出现的MissingMethodException问题
是,这几乎可以肯定是项目B引入的NuGet包引发的版本冲突问题。
System.MissingMethodException的核心原因是:编译时代码依赖的程序集版本,和运行时实际加载的程序集版本不一致——项目B大概率引入了与项目A不兼容的NuGet包版本,导致运行时加载的程序集中缺少目标方法BlobStorageHelper.BlobStorageFolder.MoveAsync(...)。
以下是具体排查步骤:
检查项目A与项目B的NuGet依赖版本
重点核对两类包的版本:BlobStorageHelper(自定义类库或第三方包)Microsoft.Azure.Storage.Blob(Azure存储相关依赖)
查看两个项目中这些包的版本号是否一致,项目B可能引入了更低版本的包,导致全局依赖被拉低。
查看解决方案的NuGet依赖树
使用.NET CLI命令分别导出两个项目的依赖列表,对比差异:# 查看项目A的依赖 dotnet list ./ProjectA/ProjectA.csproj package # 查看项目B的依赖 dotnet list ./ProjectB/ProjectB.csproj package或者在Visual Studio的Package Manager Console中执行:
Get-Package -ProjectName ProjectA Get-Package -ProjectName ProjectB找出版本不一致的关键依赖包。
验证隔离场景
- 临时移除项目B的引用,确认项目A恢复正常运行;
- 逐步将项目B的NuGet包逐个添加到项目A中,每次添加后运行测试,定位到引发冲突的具体包;
- 找到冲突包后,统一两个项目的包版本,优先使用项目A原本依赖的版本(需确认该版本兼容项目B)。
检查自定义类库版本(如果BlobStorageHelper是内部类库)
如果BlobStorageHelper是你们团队维护的类库,检查项目B是否引用了该类库的旧版本——旧版本可能未实现MoveAsync方法,导致运行时加载错误版本的程序集。检查中央包管理配置(如果启用)
如果解决方案使用了.NET 6的中央包版本管理(CPM),查看根目录下的Directory.Packages.props文件,确认是否存在项目B修改后的版本配置,导致依赖版本被覆盖。
内容的提问来源于stack exchange,提问作者Marius Anderie
相关产品推荐
相关产品推荐

