.NET Framework序列化对象在.NET Standard反序列化遇System.Memory版本错误
问题解决:System.Memory 4.0.1.1 加载失败与SOAP序列化异常
核心原因
你遇到的问题是.NET Standard 2.0共享模块引入的依赖链中,存在对System.Memory 4.0.1.1的引用,但这个版本并未直接在你的.NET Framework 4.8项目中安装,且NuGet官方源确实没有单独发布这个版本(它属于.NET Core生态中的过渡版本,并非.NET Framework的官方兼容包)。
最优解决方案:使用程序集绑定重定向
不需要刻意寻找4.0.1.1版本,通过配置绑定重定向,让运行时自动将对该版本的请求映射到你项目中已安装的System.Memory版本即可:
- 修改客户端(WPF)的App.config 和 服务器(ASP.NET)的Web.config,在
<runtime>节点下添加以下配置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <!-- 将旧版本范围覆盖到4.0.1.1,新版本替换为你实际安装的版本 --> <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.5.4" /> </dependentAssembly> </assemblyBinding> </runtime>
- 确认
newVersion的值:右键项目 → 管理NuGet程序包 → 已安装列表中找到System.Memory,查看当前版本号(比如4.5.4是兼容.NET Framework 4.8的稳定版本)。
补充说明
如果你的项目尚未安装System.Memory,直接通过NuGet搜索安装兼容.NET Framework 4.8的最新稳定版本即可,绑定重定向会自动处理版本映射问题,无需纠结4.0.1.1这个特定版本。
内容的提问来源于stack exchange,提问作者Tomtom
相关产品推荐
相关产品推荐

