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

.NET Framework 4.8下K4os.Compression.LZ4依赖System.Memory加载失败求助

解决K4os.Compression.LZ4 1.3.8在.NET Framework 4.8中System.Memory版本不匹配问题

问题根源

.NET Framework 4.8的系统程序集里自带了System.Memory的旧版本(4.0.1.2),而K4os.Compression.LZ4 1.3.8依赖的是≥4.5.5的NuGet版System.Memory,CLR默认优先加载系统内置的旧版本,导致版本清单匹配失败。

具体修复步骤

1. 确认依赖包安装状态

  • 打开NuGet包管理器,搜索System.Memory,安装4.6.0版本(与K4os依赖要求一致)
  • 检查项目引用列表,确保System.Memory的引用指向NuGet安装的版本,而非系统内置版本

2. 添加精准的程序集绑定重定向

在项目的app.config或web.config的<runtime>节点下插入以下配置,强制CLR加载NuGet安装的版本:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.1" />
      <!-- 注意:newVersion需与你安装的System.Memory程序集版本一致,NuGet 4.6.0对应的程序集版本为4.0.1.1,可通过引用属性查看 -->
    </dependentAssembly>
  </assemblyBinding>
</runtime>

3. 禁用自动绑定重定向(若存在冲突)

如果项目开启了自动绑定重定向,可能会覆盖手动配置,可修改项目文件(.csproj)关闭该功能:

<PropertyGroup>
  <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>false</GenerateBindingRedirectsOutputType>
</PropertyGroup>

修改后重新生成项目,确保手动配置生效。

4. 清理缓存并重新生成

  • 删除项目的bin、obj目录,清除NuGet缓存(工具→NuGet包管理器→包管理器设置→清除所有NuGet缓存)
  • 重新生成解决方案,确保依赖包正确复制到输出目录

验证方式

运行前检查输出目录下的.config文件,确认绑定重定向配置已正确写入,且System.Memory的版本与安装的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:28:07