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