WinForm客户端软件开发时,使用rdlc做报表,并且使用ReportViewer呈现报表时,开发者的机器运行正常。但是部署到第三方机器上运行时报错。大致有以下几种错误:
(1)未能加载文件或程序集“Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91”或它的某一个依赖项。系统找不到指定的文件。文件名:“Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”
(2)RDLC的部署(无法找到Microsoft.ReportViewer.ProcessingObjectModel.dll文件)
(3)找不到 Microsoft.SqlServer.Types.dll或者其他的依赖项
错误的提示意思是第三方机器上缺少相关dll。到程序开发计算机下找到对应的烤到客户端的程序启动目录下即可(项目烤到Bin\Debug目录下)。由于以上的dll都是在开发者机器的Windows\assembly目录中,
该目录是微软操作系统预定义的特殊目录,无法直接操作里面的文件,只能通过命令来处理。
启动cmd.exe程序,在窗口中输入以下命令行,每次输入一个命令,回车后复制成功。
copy C:\Windows\assembly\gac_msil\Microsoft.ReportViewer.Common\11.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.Common.dll D:\ReportViewer
copy C:\Windows\assembly\gac_msil\Microsoft.ReportViewer.WinForms\11.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.WinForms.DLL D:\ReportViewer
copy C:\Windows\assembly\gac_msil\Microsoft.ReportViewer.ProcessingObjectModel\11.0.0.0__89845dcd8080cc91\Microsoft.ReportViewer.ProcessingObjectModel.DLL D:\ReportViewer
copy C:\WINDOWS\assembly\GAC_MSIL\Microsoft.SqlServer.Types\11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll D:\ReportViewer
【其他的dll复制方式与此类似】
复制到D盘ReportViewer目录后,将其复制到项目的bin\Debug目录,再次运行程序,一切正常。