You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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版本引用,只是未被注意到。

解决步骤

  1. 添加绑定重定向
    在.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>
    
  2. 清理NuGet缓存
    打开命令行执行以下命令,清理本地所有NuGet缓存:

    dotnet nuget locals all --clear
    

    之后重新执行dotnet restore,或在Visual Studio中右键项目选择「还原NuGet包」。

  3. 排查间接依赖
    在.NET Standard项目目录下,执行命令查看所有依赖(含间接依赖):

    dotnet list package --include-transitive
    

    搜索结果中的Microsoft.Bcl.HashCode条目,检查是否有1.0.0.0版本被其他包引用。如果有,可尝试更新该依赖包到兼容的最新版本,或通过<PackageReference>的PrivateAssets属性排除旧版本引用。

  4. 检查项目配置

    • 打开.NET Standard项目的.csproj文件,搜索是否存在<PackageReference Include="Microsoft.Bcl.HashCode" Version="1.0.0.0" />这类条目,如有则删除或修改为1.1.1版本。
    • 若项目使用旧版packages.config管理NuGet包,打开该文件检查是否有旧版本引用,删除后重新还原包。

内容的提问来源于stack exchange,提问作者geoff swartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:52:40