4

我正在处理我公司以前的开发人员构建的一些代码,试图将 a 添加ReportViewer到 ASP.NET C# 页面。当我开始调试时,我得到以下信息。

 Parser Error Message: The base class includes the field 'ReportViewer1', but its type 
(Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control 
(Microsoft.Reporting.WebForms.ReportViewer).

我读了一些文章,暗示我的参考资料可能已经过时了。我在参考Microsoft.ReportViewer.WebForms 9.0.0.0.

我有一个ReportViewer在不同的页面,同一个项目,正在工作。当我更改WebForms 10.0.0.0对它的引用时,会出现类似的消息。为了让它再次工作,我必须改回9.0.0.0并放回web.config我进行此更改之前的状态。

要让所有 ReportViewer 工作,我需要在 9.0.0.0 还是 10.0.0.0 上,我需要对 web.config 进行更改吗?

这是两个报表查看器。我没有看到任何与他们不同的相关内容。

今天在 page1.aspx 的 9.0.0.0 下工作

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="515px" ProcessingMode="Remote" Width="100%" Visible="false">
    <ServerReport ReportServerUrl="http://servername/reportserver" />
</rsweb:ReportViewer>

在 page2.aspx 中无法在 9.0.0.0 或 10.0.0.0 下工作

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" 
    Font-Size="8pt" ProcessingMode="Remote" 
    WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
    <ServerReport ReportServerUrl="http://servername/reportserver" />       
</rsweb:ReportViewer>
4

2 回答 2

10

我不得不在 page2.aspx 中更改以下行

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

我想要吸取的教训是通过其余代码(包括 web.config)保持所有版本的参考编号相同。

于 2013-11-12T16:29:52.550 回答
1

使用MS报表视图控件的正确方法是安装Nuget包

https://www.nuget.org/packages/Microsoft.Report.Viewer

安装包 Microsoft.Report.Viewer

这样,您将在您的解决方案中获得最新的 dll,并确保它在您将其部署到生产服务器上时能够正常工作。

于 2015-02-23T15:17:19.663 回答