Ошибка синтаксического анализатора Microsoft ASP.NET ReportViewer - PullRequest
10 голосов
/ 04 мая 2009

Я уже некоторое время использую компонент MS ReportViewer на веб-сайте, но недавно я получил ошибку, показанную ниже.

Сообщение об ошибке Parser: базовый класс включает в себя поле «XYZ», но его тип (Microsoft.Reporting.WebForms.ReportViewer) не совместим с типом контроль (Microsoft.Reporting.WebForms.ReportViewer).

<rsweb:ReportViewer ID="xyz" runat="server" Width="100%" Font-Names="Verdana" Font-Size="8pt" Height="400px" ProcessingMode="Local" ShowExportControls="false">

Теперь я получаю эту ошибку как в Visual Studio, так и в рабочей среде. У меня установлен распространяемый ReportViewer.

Мне не хватает ссылки в моем проекте или что-то в этом роде?

Ответы [ 8 ]

6 голосов
/ 04 мая 2009

Я нашел ответ: Каким-то образом ссылка на 9-ю версию Microsoft.Reporting.WebForms перешла на 8-ю версию. Это вызвало ошибку. Таким образом, удаление ссылки и добавление в правильную версию ссылки, похоже, решило проблему.

Edit:

Что ж, согласно предыдущей версии файла .vbproj, это была ссылка на 9, несмотря на то, что экран свойств ссылок проекта говорил мне 8. Короче, я не совсем уверен, что удалось облажаться, но похоже, сейчас работает.

Если кто-то испытал это или имел какое-то понимание, пожалуйста, внесите свой вклад.

2 голосов
/ 14 октября 2014

Проверьте свою страницу rdlc версию как

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
2 голосов
/ 24 июля 2012

Вам также может потребоваться удалить из \ bin файлов:

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

Я только что переместил их в подкаталог.

2 голосов
/ 31 марта 2011

После чистой установки мой проект не скомпилировался, потому что ссылка на dll была повреждена, поэтому я удалил ее и добавил ее снова, а затем веб-страница, на которой используется ReportViewer, выдала ошибку парсера:

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

Я нашел ссылку на веб-странице с номером версии, отличным от того, который я только что добавил:

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

Я изменил версию на 9.0.0.0 и на этот раз получил ошибку компилятора при обновлении страницы:

CS0433: The type 'Microsoft.Reporting.WebForms.ReportViewer' exists in both 'c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\8.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll' and 'c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.WebForms\9.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WebForms.dll'

Затем я искал решение для «Microsoft.ReportViewer» и нашел больше ссылок в compilation.config:

    <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
  </assemblies>
  <buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </buildProviders>

Я также изменил номера версий, и это прекратило ошибки

0 голосов
/ 07 ноября 2016

Я столкнулся с той же ошибкой. Для меня работало удалить ссылку Microsoft.ReportViewer.WebForms и добавить ее снова.

0 голосов
/ 09 апреля 2014

Ссылки -> (Microsoft.ReportViewer.WebForms), щелкните правой кнопкой мыши.

Параметр «Указать версию», оставьте значение false.

После этого просто сохраните и запустите снова.

0 голосов
/ 17 января 2014

У меня была эта проблема на производственном сервере. Я установил правильную версию ReportViewer и убедился, что все ссылки в проекте указывают на правильную версию. Однако я все еще получал ошибки.

В конце концов я решил проблему, перейдя во «Временные файлы ASP.NET» и удалив файлы для своего приложения. Для этого вам нужно сначала остановить приложение. Это тогда решило проблему. На серверах DEV я не сталкивался с этой проблемой, потому что после установки ReportViewer я перезапустил компьютер.

Надеюсь, это кому-нибудь поможет. Я выдернул много волос, прежде чем решил этот конкретный «вызов».

0 голосов
/ 10 июля 2009

Имея ту же проблему. Чистая установка Windows 2008 Server с использованием SQL Server 2005 и отчетов SQL. Сервер размещает сайт. Установлен ReportViewer 2008 SP1. Web.config ссылается на версию 9.0.0.0.

Появляется то же сообщение об ошибке: базовый класс включает поле, но его тип (Microsoft.Reporting.WebForms.ReportViewer) не совместим с типом элемента управления (Microsoft.Reporting.WebForms.ReportViewer).

Поиск в Интернете, и многие люди испытывают ту же проблему. Некоторые люди предлагают вручную редактировать файл проекта. Мне удалось это исправить, установив Specific Version = True (Version = 9.0.0.0) в обозревателе решений -> [Имя веб-проекта] -> Ссылки-> Microsoft.Reporting.WebForms-> Properties.

В одной из сред мы также нашли Microsoft.Reporting dll в папке веб-корзины. И они конфликтовали с dll, зарегистрированными в GAC. Удаление dll решило проблему.

...