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

Posted

技术标签:

【中文标题】无法加载文件或程序集“Microsoft.ReportViewer.WebForms”【英文标题】:Could not load file or assembly 'Microsoft.ReportViewer.WebForms' 【发布时间】:2013-05-05 19:41:15 【问题描述】:

我正在尝试使用 asp.net 中的报告查看器并已上传我的网站。但是,当我的包含报表查看器的页面被加载时,它会显示以下错误:

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

这是我第一次部署 ASP.NET 网站,所以我不确定是什么问题。

【问题讨论】:

看到这个帖子:Could not load file or assembly Microsoft.ReportViewer.WebForms.XmlSerializers 【参考方案1】:

这个链接给了我一个线索,我没有安装所需的更新(我有问题的相关版本 nr,v11.0.0.0)

ReportViewer 2012 Update 'Gotcha' to be aware of

我安装了更新SQLServer2008R2SP2

我下载了ReportViewer.msi,需要安装Microsoft® System CLR Types for Microsoft® SQL Server® 2012 (look halfway down the page for installer)

在 GAC 中现已提供 WebForms v11.0.0.0(C:\Windows\assembly\Microsoft.ReportViewer.WebForms v11.0.0.0 以及 Microsoft.ReportViewer.Common v11.0.0.0

【讨论】:

还需要在新安装的 dll 被拾取之前重新启动应用程序池。 更新: 考虑使用 NUGET - 请参阅 Microsoft 文章 "Integrating Reporting Services Using ReportViewer Controls - Get Started" 中的“更新现有项目以使用 ReportViewer 控件”部分。通过 NUGET 更新后,检查“CopyLocal”设置(应设置为 true)。 谢谢。在安装 ReportViewer.msi 之前,我需要先安装 Microsoft® System CLR Types,但在安装这两个应用程序之后,现在可以正确构建。再次感谢。您可以在此处获取安装程序:microsoft.com/en-ph/download/details.aspx?id=29065【参考方案2】:

我已经安装了 Microsoft.ReportViewer.2012.Runtime nuget package 并且在没有安装 ReportViewer.msi 或 sql 功能包 12 的情况下解决了问题

【讨论】:

这对我有用。我需要在只有 v11 可用的构建服务器(TeamCity)上获取 v12 .dll。 NuGet 上有一个 2015 版本包 这对您有帮助,谢谢,nuget 中有很多作者可供您选择,但正如答案中所建议的,我使用了由作者 Fornax 和 here 创建的包是 安装链接通过nuget 我认为这个答案为我节省了一天 这对我有用,虽然我没有指定 2012.runtime。相反,我在包管理器控制台中执行了“Install-Package Microsoft.Report.Viewer”。 对于 11.0.0 版本,我使用了 Microsoft.ReportViewer 包,您可以在图片结果中看到,没有问题【参考方案3】:

您需要同时引用 Microsoft.ReportViewer.WebForms 和 Microsoft.ReportViewer.Common 并将 CopyLocal 属性设置为 true。这将导致 dll 被复制到我们的 bin 目录(两者都是必需的)。

【讨论】:

我按照上述步骤操作并引用了Microsoft.ReportViewer.WebForms (v11) 但找不到Microsoft.ReportViewer.Common (v11)。任何想法为什么我看不到 common 库? 我在 C:\Windows\assembly\GAC_MSIL\... 中找到了 Microsoft.ReportViewer.Common,感谢this answer。 我像之前的答案一样安装了 ReportViewer,但这不起作用。这个答案让我遇到了一个新异常,告诉我将 ReportViewer 添加到我的 web.config 文件中。一旦我修复了 web.config,我就被排序了。【参考方案4】:

我已经通过复制解决了这个问题

Microsoft.ReportViewer.WebForms.dll 来自C:\Program Files (x86)\Microsoft Visual Studio 12.0\ReportViewerMicrosoft.reportviewer.common.dll 来自C:\Program Files\Microsoft Office\Office15\ADDINS\PowerPivot Excel Add-in

进入 bin 文件夹(网站)。

当然web.config必须有:

    <httpHandlers>
        <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" />
    </httpHandlers>

    <assemblies>

        <add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
        <add assembly="Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
    </assemblies>

    <buildProviders>
        <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </buildProviders>

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
        </handlers>
    </system.webServer>

仅此而已。 对我来说没问题。

希望这会有所帮助。

【讨论】:

validate="false", system.webServer validation validateIntegratedModeConfiguration="false"preCondition="integratedMode" 是必需的?【参考方案5】:

更新 ReportViewer 应该可以工作。使用以下说明从 Nuget 包管理器控制台安装更新的 ReportViewer。

安装包 Microsoft.ReportingServices.ReportViewerControl.WebForms

只需在您的 aspx 文件中添加以下程序集引用即可。

这里,15.0.0.0是我的VS中安装的ReportViewerControl.WebForms的版本号。请查看解决方案参考以确认版本号。无需添加PublicTokens(如果存在多个安装,可能会再次造成麻烦)。

【讨论】:

【参考方案6】:

我遇到了同样的错误。我的网络应用程序指向报告查看器版本 10.0,但是如果安装了 11.0,它会在 10.0 .dll 中添加重定向到 11.0。这在卸载 11.0 时成为一个问题,因为这不会更正 10.0 .dll 中的重定向。在我的情况下,解决方法是简单地卸载并重新安装 10.0。

【讨论】:

【参考方案7】:

我在使用旧的网络表单应用时遇到了这个错误。结果发现标记中有一行导致问题。我删除了它,错误消失了。

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

【讨论】:

那么,这根本就没有必要了吗? @tnk479 好吧,ReportViewer 一点也不简单 :) 但这对我有用。【参考方案8】:

从版本 10.0.0.0 开始时出现此错误,即 "Microsoft.ReportViewer.WebForms,版本=10.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a" />

到版本 11.0.0.0,即

“Microsoft.ReportViewer.WebForms,版本=11.0.0.0,文化=中性,PublicKeyToken=89845dcd8080cc91”

我花了一段时间才明白不仅版本发生了变化,而且公共令牌密钥也发生了变化,正如您在上面看到的那样。

【讨论】:

【参考方案9】:

我对不同的包有同样的错误。我的问题是一个依赖项目引用了不同的版本。我将它们更改为相同的版本,一切都很好。

【讨论】:

【参考方案10】:

我的解决办法是:

    将 dll Microsoft.ReportViewer.WebForms.dll 复制到项目的 Bin 文件夹中。 删除您的参考。 从 bin 文件夹添加新引用。

我希望这会有所帮助。

【讨论】:

【参考方案11】:

将文件 Microsoft.ReportViewer.WebForms.dll 上传到您的 Web 应用程序的 bin 目录。

您可以在本地 Web 应用程序的 bin 目录中找到此 dll 文件。

【讨论】:

嘿,谢谢@Amit Mittal,我已经添加了对 Microsoft.ReportViewer.WebForms.dll 以及 Microsoft.ReportViewer.Common.dll 的引用 上传后报错,说明sserver上没有安装report viewer dll。这就是为什么您必须将报表查看器控件安装为服务器或手动将 dll 文件上传到 bin 目录的原因。【参考方案12】:

我的 DevExpress 试用版已过期。再次尝试续订。

【讨论】:

【参考方案13】:

为了使用来自服务器的数据在服务器上运行报表查看器

A) 转到项目属性----> 选择引用 ------> 添加引用

1)导入(Microsoft.ReportViewer.Common.dll)----->(路径“C:\Program Files (x86)\Microsoft Visual Studio 10.0\ReportViewer”)

2) 导入 (Microsoft.ReportViewer.ProcessingObjectModel.dll) ----->(路径“C:\Windows\Assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel”)

3)导入(Microsoft.ReportViewer.WebForms.dll)----->(路径“C:\Program Files (x86)\Microsoft Visual Studio 10.0\ReportViewer”)

B) 在以上三个 DLL 中,将其“Local Copy”设置为 True,以便在构建部署包时将其复制到“Bin”文件夹。

C) 发布解决方案

D) 然后通过“File Zilla”软件将所有文件连同“Bin”文件夹上传到“Web Server”。

E) 这将在服务器上安装 DLL,因此客户端不需要“Report Viewer.dll”。

这对我有用。

【讨论】:

以上是关于无法加载文件或程序集“Microsoft.ReportViewer.WebForms”的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集,但已加载

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集或其依赖项之一