如何解决Entity Framework Core v3.1.31加载Microsoft.Bcl.HashCode 1.0.0.0失败的问题
问题原因及解决办法
可能的原因
- 绑定重定向缺失:你的.NET 4.7.2项目作为宿主运行时,需要通过绑定重定向将旧版本程序集指向已安装的1.1.1版本。.NET Standard项目本身不依赖绑定重定向,但.NET Framework宿主环境需要它来解决版本冲突。
- NuGet缓存残留:本地NuGet缓存中可能还存着1.0.0.0版本的包,导致构建时错误加载旧版本,而非项目依赖的1.1.1版本。
- 隐性间接依赖:某个未直接引用的NuGet包,可能通过依赖链引入了Microsoft.Bcl.HashCode 1.0.0.0,这类间接引用不会在你的直接依赖列表中显示。
- 项目配置残留:项目文件(.csproj)或旧的packages.config文件中,可能存在手动添加的1.0.0.0版本引用,只是未被注意到。
解决步骤
添加绑定重定向
在.NET 4.7.2项目的app.config或web.config中,将以下配置添加到<runtime>节点下:<dependentAssembly> <assemblyIdentity name="Microsoft.Bcl.HashCode" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.1.0" /> </dependentAssembly>清理NuGet缓存
打开命令行执行以下命令,清理本地所有NuGet缓存:dotnet nuget locals all --clear之后重新执行
dotnet restore,或在Visual Studio中右键项目选择「还原NuGet包」。排查间接依赖
在.NET Standard项目目录下,执行命令查看所有依赖(含间接依赖):dotnet list package --include-transitive搜索结果中的
Microsoft.Bcl.HashCode条目,检查是否有1.0.0.0版本被其他包引用。如果有,可尝试更新该依赖包到兼容的最新版本,或通过<PackageReference>的PrivateAssets属性排除旧版本引用。检查项目配置
- 打开.NET Standard项目的
.csproj文件,搜索是否存在<PackageReference Include="Microsoft.Bcl.HashCode" Version="1.0.0.0" />这类条目,如有则删除或修改为1.1.1版本。 - 若项目使用旧版
packages.config管理NuGet包,打开该文件检查是否有旧版本引用,删除后重新还原包。
- 打开.NET Standard项目的
内容的提问来源于stack exchange,提问作者geoff swartz
相关产品推荐
相关产品推荐

