繁体   English   中英

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

[英]Could not load assembly Microsoft.ReportViewer.Common, despite installing the prerequisites

所以,我有一个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。 这没有用。 这是一个非常普遍的解决方案,但我喜欢任何其他建议或建议。

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

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

定位的程序集的清单定义与程序集引用不匹配。

它告诉你它找到了一个具有正确名称的DLL,但它是错误的版本。 我通过引用对话框添加了对Microsoft.ReportViewer.Common的引用,但我没有发现引用对话框的“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,那么一切都在已部署的计算机上运行。

注:我没有要求微软报表查看器2012运行时的安装,以便将它部署的机器上工作。 对于像我这样想要在部署期间避免任何其他安装的任何人。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM