Как исправить ошибку средства просмотра отчетов в Visual Studio 2019?

Ошибка:

Произошла ошибка при обработке локального отчета.
Недопустимое определение отчета «Include\Impresiones\Rport.rdlc».
Определение этого отчета недействительно или не поддерживается этой версией служб Reporting Services.
Определение отчета могло быть создано в более поздней версии служб Reporting Services или содержать содержимое, которое неправильно сформировано или недопустимо на основе схем служб Reporting Services.

Подробности: определение отчета имеет недопустимое целевое пространство имен «http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition», которое невозможно обновить.

Когда у меня был VS2012, я мог редактировать его без проблем, но теперь я обновился до VS2019, и когда я редактировал отчет и хотел показать его в средстве просмотра отчетов, я получаю эту ошибку, как мне ее решить?

В моем web.configУ меня есть:

      <system.web>
    <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>
    <compilation debug="true" targetFramework="4.5">
        <assemblies>
            <!--<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>-->
            <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"/>
            <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        </assemblies>
        <buildProviders>
            <!--<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>-->
            <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        </buildProviders>
    </compilation>
    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID">
        <controls>
            <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit"/>
        </controls>
    </pages>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
        <!--<add name="Reserved-ReportViewerWebControl-axd" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler" resourceType="Unspecified" />-->
        <!--<add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>-->
        <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>

2 ответа

Обновите Microsoft Reports для поддержки Visual Studio 2019/2022

Выполните следующие шаги, чтобы обновить проект с использованием сред выполнения Microsoft Report Viewer 9–13 до служб отчетов Sql Server 14 или 15.

  1. Резервное копирование решения Visual Studio

  2. Убедитесь, что установлен Microsoft Report Designer для Visual Studio 2019 (минимальная версия 15.3.1) или Visual Studio 2022 (минимальная версия 17.0.0)

  3. Удалите или удалите вручную следующие ссылки на сборки (любые версии: 9.0.0.0, 10.0.0.0, 11.0.0.0, 13.0.0.0) из проекта.

  • Microsoft.ReportViewer.WebForms

  • Microsoft.ReportViewer.Common

  1. Установите Microsoft.ReportingServices.ReportViewerControl.WebForms ИЛИ Microsoft.ReportingServices.ReportViewerControl.Winforms , который включает обе обновленные библиотеки DLL.

ASP.NET — для целевой среды выполнения .NET 4.5.2 (14.0.0.0)

      Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms -Version 140.1000.523

ASP.NET — для целевой среды выполнения .NET 4.6 и выше (15.0.0.0)

      Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms -Version 150.1537.0

WinForms — для целевой среды выполнения .NET 4.5.2 (14.0.0.0)

      Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -Version 140.1000.523

WinForms — для целевой среды выполнения .NET 4.6 и выше (15.0.0.0)

      Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -Version 150.1537.0

Это установит следующие сборки в проект...

  • Microsoft.ReportViewer.Common.dll
  • Microsoft.ReportViewer.DataVisualization.dll
  • Microsoft.ReportViewer.Design.dll
  • Microsoft.ReportViewer.ProcessingObjectModel.dll
  • Microsoft.ReportViewer.WebDesign.dll
  • Microsoft.ReportViewer.WebForms.dll
  • Microsoft.ReportViewer.WinForms.dll
  1. В ASP.NET — папка App_Code будет иметь новый каталог SqlServerTypes , содержащий Loader.cs . и включите пакет Microsoft.SqlServer.Types.14.0.314.76

Эта папка также появится в любом проекте библиотеки, в котором также установлен пакет.

              \SqlServerTypes\
        - Loader.cs or Loader.vb
        - readme.htm
        
        \SqlServerTypes\x64\
        - msvcr120.dll
        - SqlServerSpatial140.dll
        
        \SqlServerTypes\x86\
        - msvcr120.dll
        - SqlServerSpatial140.dll
  1. Если каталог App_Code настроен для VB.NET, необходимо добавить новый класс VB с именем Loader.vb , а автоматически сгенерированный Loader.cs можно удалить из App_Code\SqlServerTypes.

                Imports System
        Imports System.IO
        Imports System.Runtime.InteropServices
    
        Namespace SqlServerTypes
            Public Class Utilities
    
                <DllImport("kernel32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
                Public Shared Function LoadLibrary(ByVal libname As String) As IntPtr
    
                End Function
    
                Public Shared Sub LoadNativeAssemblies(ByVal rootApplicationPath As String)
                    Dim nativeBinaryPath = If(IntPtr.Size > 4, Path.Combine(rootApplicationPath, "SqlServerTypes\x64\"), Path.Combine(rootApplicationPath, "SqlServerTypes\x86\"))
                    LoadNativeAssembly(nativeBinaryPath, "msvcr120.dll")
                    LoadNativeAssembly(nativeBinaryPath, "SqlServerSpatial140.dll")
                End Sub
    
                Private Shared Sub LoadNativeAssembly(ByVal nativeBinaryPath As String, ByVal assemblyName As String)
                    Dim path = System.IO.Path.Combine(nativeBinaryPath, assemblyName)
                    Dim ptr = LoadLibrary(path)
    
                    If ptr = IntPtr.Zero Then
                        Throw New Exception(String.Format("Error loading {0} (ErrorCode: {1})", assemblyName, Marshal.GetLastWin32Error()))
                    End If
                End Sub
            End Class
        End Namespace
    
  2. Конфигурация

В ASP.NET обновите веб-конфигурацию для Target .NET 4.5.2 (службы Reporting Services 14.0.0.0)

      <?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2">
      <assemblies>
        <!-- All assemblies updated to version 14.0.0.0. -->
        <add assembly="Microsoft.ReportViewer.Common, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.DataVisualization, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.Design, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.ProcessingObjectModel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WebDesign, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WinForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </assemblies>
      <buildProviders>
        <!-- Version updated to 14.0.0.0. -->
        <add extension=".rdlc"
          type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </buildProviders>
    </compilation>
    <httpRuntime targetFramework="4.5.2"/>
    <httpHandlers>
      <!-- Version updated to 14.0.0.0 -->
      <add path="Reserved.ReportViewerWebControl.axd" verb="*"
        type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"
        validate="false"/>
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <handlers>
      <!-- Version updated to 14.0.0.0 -->
      <add name="ReportViewerWebControlHandler" verb="*" path="Reserved.ReportViewerWebControl.axd" preCondition="integratedMode"
        type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Или обновить веб-конфигурацию для Target .NET 4.6 и выше (службы Reporting Services 15.0.0.0)

      <?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.6">
      <assemblies>
        <!-- All assemblies updated to version 15.0.0.0. -->
        <add assembly="Microsoft.ReportViewer.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.DataVisualization, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.Design, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.ProcessingObjectModel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WebDesign, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
        <add assembly="Microsoft.ReportViewer.WinForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </assemblies>
      <buildProviders>
        <!-- Version updated to 15.0.0.0. -->
        <add extension=".rdlc"
          type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
      </buildProviders>
    </compilation>
    <httpRuntime targetFramework="4.6"/>
    <httpHandlers>
      <!-- Version updated to 15.0.0.0 -->
      <add path="Reserved.ReportViewerWebControl.axd" verb="*"
        type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"
        validate="false"/>
    </httpHandlers>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <handlers>
      <!-- Version updated to 15.0.0.0 -->
      <add name="ReportViewerWebControlHandler" verb="*" path="Reserved.ReportViewerWebControl.axd" preCondition="integratedMode"
        type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
  1. Создайте решение и убедитесь, что весь проект компилируется.

  2. Обновите отчеты для поддержки интегрированной среды разработки Visual Studio, если они созданы в более ранней версии конструктора отчетов Visual Studio.

Дважды щелкните отчет в Visual Studio и преобразуйте его при появлении запроса «Вы хотите преобразовать этот отчет». Это автоматически обновит XML до текущей поддерживаемой схемы.

После обновления отчета необходимо нажать Сохранить , чтобы завершить изменения в файле отчета. Резервная копия исходного файла автоматически создается, а на ее месте создается новый файл.

Затем, когда отчет просматривается в редакторе XML, инструмент преобразования вносит следующие изменения определения схемы.

В отчете без параметров отчета

От: VS2013


Кому: VS2019/VS2022

              <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition" 
                xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
                

Что использует новый отчет VS2019 / VS2022 по умолчанию

              <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" 
                xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

В отчете с параметрами отчета

От: VS2013

          <Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" 
            xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" 
            xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">

Кому: VS2019/VS2022

          <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" 
            xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

Инструмент преобразования добавляет блок ReportParametersLayout , если в отчете есть элемент ReportParameters . Например;

            <ReportParametersLayout>
        <GridLayoutDefinition>
          <NumberOfColumns>1</NumberOfColumns>
          <NumberOfRows>1</NumberOfRows>
          <CellDefinitions>
            <CellDefinition>
              <ColumnIndex>0</ColumnIndex>
              <RowIndex>0</RowIndex>
              <ParameterName>Test</ParameterName>
            </CellDefinition>
          </CellDefinitions>
        </GridLayoutDefinition>
      </ReportParametersLayout>

Если вы нажмете «Отмена» при появлении запроса на преобразование отчета, появится возможность вручную изменить схему.

Можно изменить схему xml и понизить поддерживаемую спецификацию, чтобы разрешить загрузку отчета в текущей версии конструктора отчетов Visual Studio.

Отчет о переходе с 2016 или 2010 на определение схемы 2008

Если отчет был создан в более новой неподдерживаемой версии текущего конструктора отчетов, обновление завершится ошибкой. Отчет необходимо будет понизить , чтобы файл можно было открыть в Visual Studio 2019.

Пожалуйста, попробуйте следующие изменения разметки XML, только если автоматическое обновление не удалось;

Из: схема 2016 г.

      <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" 
        xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

Из: схема 2016 года, включая семейство шрифтов по умолчанию

      <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" 
        xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"
        xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily" 
        MustUnderstand="df">

Из: схема 2010 г.

          <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition" 
            xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

Кому: схема 2008 г.

          <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" 
            xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

Затем понизьте версию отчета SSRS , удалив элементы, которые не используются в схеме 2008 года.

Удалите тег ReportSections , но не любые его дочерние элементы.

      <ReportSections></ReportSections>

Удалите тег ReportSection , но не любые его дочерние элементы.

      <ReportSection></ReportSection>

Удалите элемент ReportParametersLayout и все дочерние элементы (включая GridLayoutDefinition)

      <ReportParametersLayout></ReportParametersLayout>

Если отчет содержит атрибут шрифта по умолчанию "df", удалите также следующее...

Удалите атрибут Report MustUnderstand="df", если он есть.

Удалите атрибут Report xmlns:df, если он есть.

Удалите элемент df и все дочерние элементы, если они есть.

  1. Для WinForms - включить файл в выходной каталог

Если проект WinForms, чтобы включить отчет в выходной каталог, щелкните правой кнопкой мыши файл отчета и выберите «Свойства» .

Измените свойства файла «Копировать в выходной каталог» на «Копировать, если новее» и сохраните проект.

  1. Наконец: сборка и тестирование

После сохранения всех изменений создайте решение, чтобы убедиться, что проект правильно компилируется с использованием среды выполнения SQL Server Reporting Services, а затем протестируйте обработку локального отчета SSRS с помощью пользовательского кода.

Настройка собственных сборок SQL Server для пространственных типов данных

Приложения ASP.NET Для приложений ASP.NET добавьте следующую строку кода в метод Application_Start в Global.asax.cs:

SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

Настольные приложения Для настольных приложений добавьте следующую строку кода, которая будет выполняться перед выполнением каких-либо пространственных операций:

       SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

Сообщить о версиях элемента управления Viewer

  • 8.0 (2005) — 8.0.50727.42 — Visual Studio 2005

  • 9.0 (2008) — 9.0.30729.1 — Visual Studio 2008

  • 10.0 (2010) — 10.0.40219.1 — Visual Studio 2010

  • 11.0 (2012) — 11.1.3452.0 — Visual Studio 2012/2013

  • 12.0 (2014) для SQL Server 2014 — 12.0.2000.8 — SQL Server 2014

  • 12.0 (средство просмотра отчетов 2015 г. или с использованием SSDT) ​​— 12.0.2402.15 — Visual Studio 2015 (SSDT)

  • 13.0 для SQL Server 2016 (NuGet) — 13.0.1700.305 — SQL Server 2016

  • 13.0 для SQL Server 2016 — 13.0.xx — пакет дополнительных компонентов SQL Server 2016

  • 14.0 (NuGet) — 14.0.1016.229 — Visual Studio 2017

  • 14.0 (2017 SSDT) ​​— 14.0.xx — Visual Studio 2017 (SSDT)

  • 15.0 (NuGet) — 15.0.1537.0 — Visual Studio 2017/2019/2022

  • 15.0 (расширение конструктора отчетов 2017/2019) — 15.0.1322.137 — конструктор отчетов VS 2017/2019

  • 15.0 (расширение конструктора отчетов 2022) — 15.0.1509.0 — конструктор отчетов VS 2022

При создании отчета с использованием файла rdlc проверьте меню «Данные отчета» на наличие параметров. Возможно, оно пусто. Необходимо заполнить параметры, используемые в отчете.

Другие вопросы по тегам