无法加载文件或程序集“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\ReportViewer
和 Microsoft.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.webServervalidation 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