尽管安装了先决条件,但无法加载程序集Microsoft.ReportViewer.Common

时间:2014-06-19 16:27:25

标签: c# reporting-services rdlc

所以,我有一个C#windows工作流项目,它以编程方式创建报告并通过电子邮件发送出去。它在我的本地计算机上运行正常,但将其放在另一台计算机上的调度程序中会产生以下错误:

无法加载文件或程序集“Microsoft.ReportViewer.Common,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

根据其他主题,我尝试从以下地址安装MICROSOFT®REPORTVIEWER 2012 RUNTIME:http://www.microsoft.com/en-us/download/details.aspx?id=35747。这没有用。这是一个非常普遍的解决方案,但我喜欢任何其他建议或建议。

3 个答案:

答案 0 :(得分:1)

接受的答案指出了我正确的方向。但是,没有为我提供足够的细节来达成解决方案。我想将此作为对该答案的评论添加,但它太长了。

在我的VS项目中,我引用了Microsoft.ReportViewer.WinForms版本12.0.0.0,当部署到另一台计算机时遇到了与此问题相同的错误。问题的关键是错误的一部分:

  

定位的程序集的清单定义与程序集不匹配   参考

它告诉你它发现了一个具有正确名称的DLL,但它是错误的版本。我通过引用对话框添加了对Microsoft.ReportViewer.Common的引用,但我没有发现#34; Extensions"中列出的唯一一个引用。引用对话框的部分适用于版本10.0.0.0。所以当然如果你告诉它部署错误的那个,它会部署错误的。

您需要做的是在系统上找到版本为12.0.0.0的Microsoft.ReportViewer.Common.dll文件,并手动包含对该文件的引用。对我来说,它位于以下目录中:

  

C:\的Windows \组件\ GAC_MSIL \ Microsoft.ReportViewer.Common \ 12.0.0.0__89845dcd8080cc91 \

在我的VS项目中添加该引用并将两个DLL设置为Copy Local后,一切都在已部署的计算机上运行。

注意:我没有要求安装Microsoft Report Viewer 2012 Runtime,以使其在已部署的计算机上运行。对于像我这样想要在部署期间避免任何其他安装的人。

答案 1 :(得分:0)

尝试将dll文件添加到项目中: C:\ Program Files \ Microsoft Visual Studio 10.0 \ ReportViewer 发布项目后将它们添加到bin文件夹

答案 2 :(得分:0)

嗯,原来发布时坚持使用的是10.0.0.0版本,而我需要11.0.0.0。我不得不从Windows程序集中手动复制并粘贴更新的.dll。本文介绍了如何从我的机器上获取.dll:

http://blog.clicdata.com/2012/12/05/azure-report-viewer-couldnt-load-file-or-assembly-microsoft-reportviewer-common-version11-0-0-0/