Ошибка анализатора 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 и добавить ее снова.