无法加载文件或程序集'Microsoft.ReportViewer.Common,版本=11.0.0.0'。

51
我最近将我的N层解决方案从.NET 3.5 vs 2008升级到了4.5 visual studio 2012。虽然一切都进行得很好,但水晶报表出了问题,我不得不从以下链接安装适用于Visual Studio 2012的新运行时水晶报表:http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe。 安装以上软件包后,我不得不解决CrystalViewer的一些不推荐使用的功能和属性,之后在开发环境下正常呈现报表(Windows 7 64位,SQL Server 2005,Visual Studio 2012)。当我将软件包部署到测试环境Windows Server 2008 R2中时, 应用程序无法加载,抛出错误Could not load file or assembly Microsoft.ReportViewer.WebForms, Version=11。
我通过从C:\Program Files (x86)\Microsoft Visual Studio 11.0\ReportViewer复制DLL到解决方案的bin文件夹并设置copylocal=true属性来解决ReportViewer.WebForms错误,并部署软件包。此后我收到一个错误,Could not load file or assembly 'Microsoft.ReportViewer.Common, Version=11.0.0.0,我尝试在我的机器上搜索该DLL,但找不到。当项目在Visual Studio中运行时,在Debug-> Windows-> Module中没有列出该文件,但是在全局程序集缓存中该文件已安装,但我不知道它是如何安装到全局缓存中并且来自哪里的。我发现一个解决方法是我需要安装Microsoft包中的ReportViewer.msi,但如果我安装此软件包,则会要求我安装SQL Server 2012,而我不需要。请问有人能帮助我解决这个问题吗?谢谢!
13个回答

59

不知道这对任何人是否有用,但搜索所有这些dll:

  • Microsoft.ReportViewer.Common.dll
  • Microsoft.ReportViewer.ProcessingObjectModel.dll
  • Microsoft.ReportViewer.WebForms.dll
  • Microsoft.ReportViewer.WinForms.dll
  • Microsoft.ReportViewer.DataVisualization.dll

您可以在C:\Windows\assembly\GAC_MSIL\...中找到它们,然后将它们放入您项目的引用中。

对于每一个dll,请选择“local copy”,并检查32位或64位解决方案。


1
很棒的答案。这对我有用,只需添加 MicrosoftReportViewer.CommonMicrosoft.ReportViewer.WebForms 并将复制本地设置为 true。我想答案中列出的其他要求取决于所使用的报告类型。 - T3.0
1
谢谢,你救了我的一天。对于我的WinForms 2013 c#应用程序,将“Local Copy”更改为“MicrosoftReportViewer.Common.dll”和“Microsoft.ReportViewer.WinForms.dll”就解决了问题! - MichaSchumann
非常感谢!我正在从我们的实时服务器上下载一个包,但在 Visual Studio 中找不到这个引用。浏览到该文件位置后,立即找到了它们。 - Khaneliman
我运行了以下命令以获取GAC的文件副本:@echo off cd c:\windows\assembly\GAC_MSIL xcopy . C:\users_yourdirectory_\temp\GacDump /s /y - Taersious
你们太棒了。 - Daniel Dolz

35
您可以安装Microsoft Report Viewer 2012 Runtime并更改引用,使其指向由运行时安装的引用。 http://www.microsoft.com/en-gb/download/details.aspx?id=35747 我已经安装了运行时,它没有要求安装SQL Server 2012。在安装之前,请尝试卸载任何先前版本的报告查看器。

1
谢谢。当我尝试在Windows Server 2008上安装reportviewer.msi时,它会显示“该文件被阻止,因为它没有有效的数字签名来验证其发布者”。当我选择“未知发布者”,检查证书,安装证书时,仍然无法工作。有什么办法解决这个问题吗? - 3355307
1
成功在Windows Server 2008上安装了ReportViewer。DLL错误已经消失,但是在Crystal Viewer中报告页面仍然是空白的。 - 3355307
5
如果您不想在服务器上安装它,也可以将具有相同名称的 NuGet 包添加到您的 Web 项目中。 - CrazyPyro
我在服务器上安装了一个Web应用程序,但当我尝试访问该Web应用程序时,出现相同的错误。服务器是否需要安装ReportViewer.msi?我可以在我的计算机上进行调试,并且它可以正常工作。 - Si8
3
在安装该软件包之前,您可能还需要安装“Microsoft® System CLR Types”,该软件包位于此处。请注意不要改变原文的意思。 - David Rogers

27

由于 Microsoft.ReportViewer.2012.Runtime 包含了 Microsoft.ReportViewer.WebFormsMicrosoft.ReportViewer.CommonMicrosoft.ReportViewer.ProcessingObjectModel 库,您只需要在PM控制台上运行以下命令即可:

Install-Package Microsoft.ReportViewer.2012.Runtime

注意:如果您想完全删除旧的 Microsoft.ReportViewer.xxx 引用,可以从 Manage NuGet Packages> Installed Packages 菜单中将其删除,然后从项目中的 packages.config 文件中删除相关行。之后再次构建项目时,它将不会再次出现。


10

无法加载文件或程序集“Microsoft.ReportViewer.Webforms”

无法加载文件或程序集“Microsoft.ReportViewer.Common”

我在Visual Studio 2015中遇到了这个问题。

原因:

缺少对 Microsoft.ReportViewer.Webforms dll 的引用。

可能的解决方法:

步骤1:

将 "Microsoft.ReportViewer.Webforms.dll" 添加到解决方案中。

导航到Nuget软件包管理器控制台,如下所示:

“工具-->NugetPackageManager-->Package Manager Console”。

然后在控制台中输入以下命令

PM>Install-Package Microsoft.ReportViewer.Runtime.WebForms

然后它将在“..\packages\Microsoft.ReportViewer.Runtime.WebForms.12.0.2402.15\lib”(您的项目文件夹路径)中安装Reportviewer.webforms dll

和在“..\packages\Microsoft.ReportViewer.Runtime.Common.12.0.2402.15\lib”(您的项目文件夹路径)中安装ReportViewer.Runtime.Common dll。

步骤2:

删除现有的 “Microsoft.ReportViewer.WebForms” 引用。我们需要在解决方案中引用这些dll文件,可通过“右键单击解决方案 > 引用 --> 添加引用 -->浏览”来实现。从上述路径添加这两个dll文件。

步骤3:

更改web.Config文件以指向Visual Studio 2015。将Microsoft.ReportViewer.WebForms和Microsoft.ReportViewer.Common版本11.0.0.0注释掉,并取消注释Microsoft.ReportViewer.WebForms和Microsoft.ReportViewer.Common Version = 12.0.0.0,如下图所示。

Microsoft.ReportViewer.Webforms/Microsoft.ReportViewer.Common

也请参考下面的链接。

无法加载文件或程序集 'Microsoft.ReportViewer.WebForms'


第一步对我有用! - Harry .Naeem

8

那个 NuGet 包包括 WebForms 吗? - Rod
1
通过查看包 - 不。 - Ognyan Dimitrov

3

我在Winforms中也遇到了同样的问题。

对我有效的解决方案是:

Install-Package Microsoft.ReportViewer.Runtime.Winforms

2

我遇到了同样的问题。

对于我来说解决方法是:

你必须在C:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel中注册与开发服务器web.config中注册的Microsoft.ReportViewer.ProcessingObjectModel版本相同的版本,

enter image description here

在我的情况下,我只在生产服务器上注册了第13个版本,而在开发服务器上有第12个版本。

解决方法是在生产服务器上也安装第12个版本。

第12个版本:

https://download.microsoft.com/download/A/1/2/A129F694-233C-4C7C-860F-F73139CF2E01/ENU/x86/ReportViewer.msi

现在我已经有了版本12,在生产环境中报告工作正常。

*** 安装后记得重置您的IIS

enter image description here


2

对我来说,这是最好的解决方案。此外,使用NuGet可以自动获取所有依赖项。谢谢。 - Raphael

2

将Microsot.ReportViewer 2010或2012添加到安装程序的前提条件中,然后它会首先安装Report Viewer,如果它不在“C:\Windows\assembly\GAC_MSIL…”中,安装完成后再安装设置项目。


1
在我的情况下,我的项目不需要'Microsoft.ReportViewer.Common.dll'程序集,所以我只需删除所有参考(项目->添加引用...->...)(VS2013发布选项卡中的所有要求都会自动删除),然后一切正常。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接