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

问题描述 投票:0回答:3

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

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

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

c# reporting-services rdlc
3个回答
4
投票

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

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

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

它告诉你它找到了一个名称正确的DLL,但版本错误。我通过引用对话框添加了对 Microsoft.ReportViewer.Common 的引用,但我没有发现引用对话框的“扩展”部分中列出的唯一一个是针对版本 10.0.0.0 的。因此,如果你告诉它部署错误的,它当然会部署错误的。

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

C:\Windows ssembly\GAC_MSIL\Microsoft.ReportViewer.Common .0.0.0__89845dcd8080cc91\

在我的 VS 项目中添加该引用并将两个 DLL 设置为“复制本地”后,一切都可以在已部署的计算机上运行。

注意:我不需要需要安装 Microsoft Report Viewer 2012 Runtime 才能使其在已部署的计算机上运行。对于像我一样想要在部署过程中避免任何其他安装的人。


0
投票

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


0
投票

我今天更新 ReportViewer.Common 后遇到了这个问题。

新版本没有像旧版本那样具有不同语言的文件夹,但该项目仍然将它们显示在 bin 文件夹中。当我尝试编译时,出现错误,因为它们不存在。

我如何修复它:从解决方案资源管理器中,我选择了各种语言文件夹并单击“删除”。

screenshot

在 NuGet 包管理器中,我还更新了很多旧包。旧包仍在项目中,而新包则不在项目中。所以,我添加了新的并删除了旧的。

solutionExplorerScreenshot

这似乎是一个非常手动的过程 - 我不习惯使用 Visual Studio 这样做。

我必须重建项目,但之后我就可以发布了。

© www.soinside.com 2019 - 2024. All rights reserved.