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

EPPlus v5.7.5部署后出现Microsoft.IO.RecyclableMemoryStream加载错误如何解决

彻底解决EPPlus与Microsoft.IO.RecyclableMemoryStream版本冲突方案

该错误属于典型的.NET程序集引用不匹配问题:EPPlus v5.7.5编译时依赖的是Microsoft.IO.RecyclableMemoryStream v1.4.1.0,虽然官方文档说明兼容1.4以上版本,但运行时默认会严格匹配编译时引用的版本号,再加上多项目引用不同版本的依赖,就会出现清单定义不匹配的报错。调试阶段能正常运行是VS自动做了隐式的版本适配,打包时没有自动处理配置才会暴露问题。

解决步骤

1. 统一全解决方案的依赖版本

  • 打开解决方案级Nuget包管理界面,将所有项目的Microsoft.IO.RecyclableMemoryStream统一升级到目标最新v2.1.3版本,确保没有任何项目引用v2.1.2或更低版本,从根源消除多版本冲突隐患。

2. 添加强命名程序集绑定重定向

绑定重定向规则仅对主启动项目的配置文件生效,公共类库项目无需添加该配置:

  • 如果你使用的是.NET Framework项目,在主启动项目的App.config的<runtime>节点下添加以下规则:
<dependentAssembly>
  <assemblyIdentity name="Microsoft.IO.RecyclableMemoryStream" publicKeyToken="31bf3856ad364e35" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-2.1.3.0" newVersion="2.1.3.0" />
</dependentAssembly>

如果使用packages.config管理Nuget包,也可以右键主项目,选择【解决Nuget包冲突】,Visual Studio会自动生成正确的绑定重定向规则到App.config中。

  • 如果你使用的是.NET Core/.NET 6+项目,在主启动项目的.csproj文件<PropertyGroup>节点中添加以下配置,开启自动绑定重定向:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>

3. 修正MSI打包配置

  • 打开VS安装项目的文件系统视图,确认打包内容中已经包含主项目输出的配置文件[你的应用名].exe.config,之前调试正常打包报错90%的概率是打包时遗漏了带绑定重定向规则的配置文件,导致运行时无法加载版本适配规则。如果没有自动包含,可以手动添加主项目输出的config文件到应用程序安装目录。

4. 部署验证

  • 安装完成后,检查应用安装目录下的配置文件是否包含绑定重定向规则,同时确认目录下的Microsoft.IO.RecyclableMemoryStream.dll文件版本为v2.1.3.0,无旧版本dll残留即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:00