基于.NET Framework4.8的WinForms应用System.Memory加载失败求助
解决.NET Framework 4.8下System.Memory版本冲突问题
问题根源
Npgsql 7.0.4依赖的System.Memory版本和项目中已安装的4.5.5.0存在绑定冲突,.NET Framework的程序集绑定重定向配置未正确生效,导致运行时尝试加载旧版本(4.0.1.1),引发匹配失败的异常。
解决步骤
1. 配置程序集绑定重定向
在项目的App.config里添加或更新System.Memory的绑定重定向,强制运行时使用4.5.5.0版本:
<configuration> <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.5.5.0" newVersion="4.5.5.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
如果已有<assemblyBinding>节点,直接把<dependentAssembly>段加进去就行。
2. 清理缓存并重新还原NuGet包
- 打开VS的工具→NuGet包管理器→包管理器设置,在常规里点击清除所有NuGet缓存。
- 右键项目→管理NuGet程序包,点击还原,确保所有依赖包正确下载。
3. 确认项目引用的System.Memory版本
- 右键项目→引用,找到System.Memory,检查版本是否为4.5.5.0。
- 若版本不对,右键该引用→属性,把特定版本设为
True,并确认程序集路径指向NuGet包目录下的正确文件。
4. 调整Npgsql版本(可选)
Npgsql 7.x对.NET Framework的兼容性不如6.x系列,如果不是必须用7.0.4,可以卸载后安装Npgsql 6.x稳定版本,能减少版本冲突概率。
5. 清理输出目录并重新生成
手动删除项目的bin和obj文件夹,然后在VS里点击生成→重新生成解决方案,确保编译输出都是最新的。
内容的提问来源于stack exchange,提问作者ZedZip
相关产品推荐
相关产品推荐

