C# WinForms ReportViewer含页眉图片的报表无法渲染打印问题
问题根因
该问题由程序集版本不匹配导致:你使用的RDLC报表运行时依赖旧版本System.Drawing, Version=2.0.0.0处理图片渲染逻辑,但目标设备上的.NET Framework 4.8仅内置了System.Drawing, Version=4.0.0.0,缺少对应的程序集绑定重定向规则,导致运行时加载旧版程序集失败,仅页眉带图片的报表会触发该问题。
解决方案
方案1:项目端统一配置(推荐,适配所有部署设备)
- 打开WinForms项目的
App.config文件 - 在
<configuration>根节点下添加如下运行时配置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Drawing" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
- 重新编译项目,将新版本程序部署到问题设备即可。
方案2:目标设备临时修复(无需重新编译程序)
- 进入问题设备的程序安装目录,找到与主程序同名的配置文件
AT Scanner IV.exe.config,若文件不存在则新建同名文件 - 将方案1中的配置内容写入该文件,保存后重启程序即可生效。
验证排查项
如果修改后问题仍存在,可检查以下内容:
- 确认问题设备已完整安装.NET Framework 4.8,可到控制面板-程序和功能中确认是否存在
.NET Framework 4.8 Advanced Services项,缺失的话安装完整版.NET Framework 4.8即可 - 检查RDLC报表定义文件是否存在显式引用v2.0版本
System.Drawing的配置,如有直接删除即可,ReportViewer运行时会自动适配重定向后的程序集版本。
内容的提问来源于stack exchange,提问作者Bernie Hunt
相关产品推荐
相关产品推荐

