.NET 6迁移后DevExpress报表设计器缺失System.Runtime.Serialization.Primitives 6.0.0.0
问题背景
项目从.NET Standard后端 + .NET Framework 4.7.2前端迁移至.NET6,使用DevExpress作为UI组件工具包。WinForm设计器正常,但旧报表设计器报错,提示找不到System.Runtime.Serialization.Primitives Version 6.0.0.0;新建报表可正常打开设计器,但复制旧报表的C#代码和设计器代码到新报表后问题复现。
修复步骤
清理设计器文件中的版本绑定
打开旧报表的.Designer.cs文件,查找所有包含System.Runtime.Serialization.Primitives的版本绑定代码(例如[assembly: AssemblyReference("System.Runtime.Serialization.Primitives", Version="6.0.0.0")]),将其修改为无版本限定的形式,或者替换为项目中实际安装的4.3.0版本。修改报表序列化配置文件
若旧报表有.repx文件,用文本编辑器打开,查找并替换所有硬编码的System.Runtime.Serialization.Primitives版本号,删除版本属性或改为4.3.0版本。DevExpress报表基于XML序列化,旧配置中可能残留了旧框架的程序集版本信息。使用DevExpress报表升级工具
在Visual Studio中,通过DevExpress菜单进入Reporting->Upgrade Reports,选中项目中的旧报表文件执行升级操作,工具会自动更新报表的序列化信息和程序集引用,适配.NET6环境。添加程序集绑定重定向
在项目的app.config文件的<runtime>节点下添加绑定重定向配置,将对6.0.0.0版本的请求重定向到已安装的4.3.0版本:<dependentAssembly> <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.3.0.0" /> </dependentAssembly>重新生成设计器代码
删除旧报表的.Designer.cs文件,右键报表文件选择Run Custom Tool,让Visual Studio重新生成适配.NET6环境的设计器代码。
验证方法
完成上述操作后重新打开旧报表设计器,确认报错消失;若复制旧代码到新报表后仍出问题,需检查代码中是否残留旧版本引用,重复上述清理步骤。
内容的提问来源于stack exchange,提问作者Unseen

