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

本文关键字:安装 先决条件 常见 加载 Microsoft ReportViewer 程序集 | 更新日期: 2023-09-27 18:09:17

所以,我有一个c# windows工作流项目,以编程方式创建一个报告,并通过电子邮件发送出去。它在我的本地机器上工作得很好,但是把它放在另一台机器上的调度程序上会产生以下错误:

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

基于其他主题,我尝试从以下地址安装MICROSOFT®REPORT VIEWER 2012 RUNTIME: http://www.microsoft.com/en-us/download/details.aspx?id=35747。但这无济于事。这是非常普遍的解决方案,但我希望有任何其他建议或建议。

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

这个被接受的答案为我指明了正确的方向。然而,没有提供足够的细节让我达成解决方案。我想把这个作为评论添加到那个答案中,但是它太长了。

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

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

它告诉你它找到了一个名称正确的DLL,但它是错误的版本。我已经通过引用对话框添加了一个对Microsoft.ReportViewer.Common的引用,但是我没有注意到,在引用对话框的"Extensions"部分中列出的唯一一个引用是10.0.0.0版本的。所以如果你告诉它部署错误的,它当然会部署错误的。

你要做的就是在你的系统上找到版本为12.0.0.0的microt.reportviewer.common .dll文件,并手动包含对该文件的引用。对我来说,它在以下目录中:

C: ' Windows '会议' GAC_MSIL ' Microsoft.ReportViewer.Common ' 12.0.0.0__89845dcd8080cc91 '

一旦我在VS项目中添加了引用并将两个dll设置为Copy Local,那么在部署的机器上一切都工作了。

注意:我没有要求安装Microsoft Report Viewer 2012 Runtime以使其在已部署的机器上工作。对于像我一样希望在部署过程中避免任何其他安装的人。

尝试将DLL文件从:C:'Program Files'Microsoft Visual Studio 10.0'ReportViewer在发布项目后将它们添加到bin文件夹