Ошибка анализатора ASP.NET ReportViewer Microsoft ASP.NET

Я уже некоторое время использую компонент 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, установленный в производстве.

Как-то я пропустил ссылку в своем проекте или что-то еще?

Ответ 1

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

Edit:

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

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

Ответ 2

После чистой установки мой проект не скомпилировался, потому что ссылка на 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>

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

Ответ 3

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

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

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

Ответ 4

Проверьте версию страницы rdlc, например

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

Ответ 7

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

Параметр "Укажите версию" оставьте это как false.

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

Ответ 8

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