移除Microsoft.AspNetCore.Http.Abstractions引用后仍遇版本冲突错误求助
检查间接依赖
运行dotnet list package --include-transitive命令,查看SharedKernel项目的所有间接依赖,定位是哪个依赖项引入了Microsoft.AspNetCore.Http.Abstractions 9.0.0.0。也可以在Visual Studio中右键项目→管理NuGet包→切换到“已安装”标签,勾选“包括预发布”和“显示所有版本”,查看完整依赖树。清理项目文件残留引用
直接打开SharedKernel的.csproj文件,搜索是否存在残留的<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions"或<Reference Include="Microsoft.AspNetCore.Http.Abstractions"节点,如有则删除。同时检查是否有<FrameworkReference>节点,某些ASP.NET Core框架会自动引入该程序集,可根据项目需求调整框架版本。配置绑定重定向
查看主应用的web.config或app.config文件,添加或更新针对Microsoft.AspNetCore.Http.Abstractions的绑定重定向,强制统一版本:<dependentAssembly> <assemblyIdentity name="Microsoft.AspNetCore.Http.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="2.3.0.0" /> </dependentAssembly>若为.NET Core/.NET 5+项目,可在.csproj中添加以下配置自动生成绑定重定向:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup>清除全局NuGet缓存
执行dotnet nuget locals all --clear清除本地NuGet缓存,避免残留的旧版本包干扰。也可手动删除%USERPROFILE%\.nuget\packages路径下的Microsoft.AspNetCore.Http.Abstractions相关文件夹。检查程序集清单与属性
右键SharedKernel生成的.dll文件→属性→详细信息,查看“引用的程序集”列表是否仍包含Microsoft.AspNetCore.Http.Abstractions 9.0.0.0。也可使用ILDasm工具打开.dll文件,查看清单中的程序集引用,确认是否存在该依赖。若为发布后的文件,检查.deps.json文件,里面会列出所有依赖的程序集版本信息。统一跨项目依赖版本
确认引用SharedKernel的主应用或其他项目,是否直接引用了Microsoft.AspNetCore.Http.Abstractions 2.3.0.0,导致版本冲突。建议统一所有项目的该包版本,要么全部升级到9.0.0.0(需确认兼容性),要么降级SharedKernel的间接依赖版本至2.3.0.0。
内容的提问来源于stack exchange,提问作者Trent W

