Я только начал писать программное обеспечение для создания отчетов в новой версии Visual Studio под названием Visual Studio 2017 RC, но только что заметил, что основные инструменты просмотра отчетов отсутствуют как в формах Windows, так и в шаблоне приложения WPF. Может ли кто-нибудь сказать мне, почему инструмент просмотра отчетов исчез из Visual Studio 2017? Без него реально беда. Есть ли альтернатива работе с этим инструментом в новой визуальной студии?
Инструмент Reportviewer отсутствует в Visual Studio 2017 RC
Ответы (5)
** Обновление**: 19.11.2019
Microsoft выпустила новую версию элемента управления 150.1400.0
в своей библиотеке Nuget. Мое короткое тестирование показывает, что он снова работает в дизайнере форм, где 150.1357.0
и 150.1358.0
не работали. Это включает в себя возможность изменять размер и модифицировать задачи ReportViewer на самом элементе управления.
** Обновление**: 18 августа 2019 г.
Удаление последней версии и откат к 150.900.148.0
, похоже, работает на нескольких компьютерах, которые я использую с VS2017 и VS2019.
Вы можете вернуться к 150.900.148 в диспетчере пакетов решений Nuget. Работает аналогично предыдущим версиям. Используйте раскрывающийся список, чтобы выбрать более старую версию.
Возможно, будет проще вручную удалить ссылки на публикацию 150 900 версий ReportViewer и прочитать их, чем исправлять их.
Не забудьте перезапустить Visual Studio после изменения записи панели инструментов.
Обновление: 07.08.2019
Выпущена более новая версия элемента управления ReportViewer, вероятно, совпадающая с Visual Studio 2019. Я работал с V150.1358.0.
Следуя указаниям в этом ответе, вы получаете контроль на панели инструментов дизайнера. Но после того, как он упал на форму, он не отображается. Элемент управления отображается под формой как невизуальный компонент.
Это работает так, как задумано в соответствии с поддержкой Microsoft SQL BI. Это группа, отвечающая за контроль.
Хотя вы по-прежнему не можете взаимодействовать с элементом управления напрямую, эти дополнительные шаги дают обходной путь, позволяющий изменять размер элемента управления в форме. Хотя теперь он виден, дизайнер рассматривает элемент управления так, как будто его не существует.
Я создал запрос обратной связи по предложению службы поддержки Microsoft SQL BI. Пожалуйста, проголосуйте за него, чтобы привлечь внимание Microsoft.
Дополнительные шаги:
- После добавления средства просмотра отчетов в WinForm
- Добавьте панель управления в WinForm.
В файле формы form.designer.cs добавьте на панель элемент управления Reportviewer.
// // panel1 // this.panel1.Controls.Add(this.reportViewer1);
Вернитесь в дизайнер формы, вы должны увидеть reportViewer на панели
- На панели «Свойства» выберите ReportViewer в раскрывающемся списке элементов управления.
- Задайте для свойства Dock объекта reportViewer значение Fill.
Теперь вы можете позиционировать reportViewer, фактически взаимодействуя с панелью.
Обновление: Microsoft выпустила document от 18 апреля 2017 года, в котором описывается, как настроить и использовать инструмент создания отчетов в Visual Studio 2017.
В Visual Studio 2017 инструмент ReportViewer
не установлен по умолчанию на панели инструментов. Установка расширения Microsoft Rdlc Report Designer for Visual Studio и последующее добавление его в панель инструментов приводит к появлению невизуального компонента, который появляется под формой.
Служба поддержки Microsoft сообщила мне, что это ошибка, но по состоянию на 21 апреля 2017 года она «работает, как задумано».
Следующие шаги необходимо выполнить для каждого проекта, для которого требуется ReportViewer
.
- If you have
ReportViewer
in the Toolbox, remove it. Highlight, right-click and delete.- You will have to have a project with a form open to do this.
Отредактировано 07.08.2019. Похоже, что текущая версия расширения RDLC Report Designer больше не мешает. Это необходимо для фактического редактирования отчетов.
Если у вас установлено расширение Microsoft Rdlc Report Designer для Visual Studio, удалите его.Закройте решение и перезапустите Visual Studio. Это важный шаг, ошибки будут возникать, если VS не будет перезапущен при переключении между решениями.
- Откройте свое решение.
- Откройте консоль диспетчера пакетов NuGet (
Tools/NuGet Package Manager/Package Manager Console
) В приглашении PM> введите эту команду, регистр имеет значение.
Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms
Вы должны увидеть текст, описывающий установку пакета.
Теперь мы можем временно добавить инструмент ReportViewer
в набор инструментов.
Щелкните правой кнопкой мыши на панели инструментов и используйте
Choose Items...
Нам нужно перейти к нужной DLL, которая находится в папке решений
Packages
, поэтому нажмите кнопку обзора.В нашем примере мы можем вставить в папку пакетов, как показано в тексте консоли диспетчера пакетов.
C:\Users\jdoe\Documents\Projects\_Test\ReportViewerTest\WindowsFormsApp1\packages
Затем дважды щелкните папку с именем
Microsoft.ReportingServices.ReportViewerControl.Winforms.140.340.80
.Номер версии, вероятно, изменится в будущем.
Затем дважды щелкните
lib
и еще разnet40
.Наконец, дважды щелкните файл
Microsoft.ReportViewer.WinForms.dll
Вы должны увидеть
ReportViewer
в диалоговом окне. Прокрутите вправо, и вы увидите связанную с ним версию 14.0.0.0.Нажмите «ОК».
ReportViewer
теперь находится в панели инструментов.
Перетащите инструмент на нужную форму (формы).
После завершения удалите инструмент
ReportViewer
из набора инструментов. Вы не можете использовать его с другим проектом.Вы можете сохранить проект, и все готово.
Не забывайте перезапускать Visual Studio каждый раз, когда вам нужно открыть проект с помощью ReportViewer
, чтобы DLL загружалась из правильного места. Если вы попытаетесь открыть решение с помощью формы с ReportViewer
без перезапуска, вы увидите ошибки, указывающие на то, что «The variable 'reportViewer1' is either undeclared or was never assigned.
».
Если вы добавляете новый проект в то же решение, вам нужно создать проект, сохранить решение, перезапустить Visual Studio, после чего вы сможете добавить ReportViewer
в форму. Я видел, как это не работает в первый раз и отображается как невизуальный компонент.
Когда это происходит, обычно работает удаление компонента из формы, удаление ссылок Microsoft.ReportViewer.*
из проекта, сохранение и перезапуск.
.NET Framework 4 Client Profile
на .NET Framework 4
.
- person Conrad; 28.02.2018
Обновление: этот ответ работает как с Visual Sudio 2017, так и с 2019.
Для меня это сработало следующими тремя шагами:
- Обновление Visual Studio до последней сборки.
- Adding Report / Report Wizard to the Add/New Item menu by:
- Going to Visual Studio menu Tools/Extensions and Updates
- Выберите В сети на левой панели.
- Найдите Конструктор отчетов Microsoft Rdlc для Visual Studio
- Скачайте и установите его.
Добавление средства просмотра отчетов:
Перейдите в Диспетчер пакетов NuGet.
Установка Microsoft.ReportingServices.ReportViewerControl.Winforms
- Перейдите в папку, содержащую Microsoft.ReportViewer.WinForms.dll: %USERPROFILE%\.nuget\packages\microsoft.reportingservices.reportviewercontrol.winforms\140.1000.523\lib\net40 сильный>
- Перетащите файл Microsoft.ReportViewer.WinForms.dll в окно Toolbox Visual Studio.
Для приложений WebForms:
- То же.
- То же.
Добавление средства просмотра отчетов:
Перейдите в Диспетчер пакетов NuGet.
Установка Microsoft.ReportingServices.ReportViewerControl.WebForms
- Перейдите в папку, содержащую файл Microsoft.ReportViewer.WebForms.dll: %USERPROFILE%\.nuget\packages\microsoft.reportingservices.reportviewercontrol.webforms\140.1000.523\lib\net40< /сильный>
- Перетащите файл Microsoft.ReportViewer.WebForms.dll в окно Toolbox Visual Studio.
Это все!
Обратите внимание, что эта процедура добавления служб отчетов, описанная @Rich Shealer выше, будет повторяться каждый раз, когда вы запускаете другой проект. Во избежание этого:
Если вам может понадобиться настроить другой компьютер (например, дома без Интернета), сохраните загруженные с рынка установщики в безопасном месте, например:
- Microsoft.DataTools.ReportingServices.vsix, and
- Microsoft.RdlcDesigner.vsix
Получите следующие библиотеки из пакетов или папки bin приложения, которое вы создали со службами отчетов:
- Microsoft.ReportViewer.Common.dll
- Microsoft.ReportViewer.DataVisualization.dll
- Microsoft.ReportViewer.Design.dll
- Microsoft.ReportViewer.ProcessingObjectModel.dll
- Microsoft.ReportViewer.WinForms.dll
Установите 2 компонента из 1 выше
- Добавьте dll из 2 выше в качестве ссылок (Проект> Ссылки> Добавить...)
- (Необязательно) Добавьте вкладку «Отчеты» на панель инструментов.
- Добавить элементы на вкладку «Отчетность»
- Перейдите в папку bin или туда, где у вас есть вышеуказанные DLL, и добавьте их.
Теперь вы можете идти! Значок ReportViewer будет добавлен на вашу панель инструментов, и теперь вы также найдете шаблоны Report и ReportWizard, добавленные в ваш общий список шаблонов, когда вы хотите добавить новый элемент... (отчет) в свой проект.
NB: при настройке с помощью диспетчера пакетов Nuget шаблоны Report и ReportWizard сгруппированы в разделе Reporting. Использование моего метода, описанного выше, однако, не добавляет группу отчетов в установленные шаблоны, но я не думаю, что это проблема, учитывая, что он позволяет вам быстро интегрировать rdlc без интернета и без загрузки того, что у вас уже есть, из Nuget каждый раз!
Загрузите конструктор отчетов Microsoft Rdlc для Visual Studio по этой ссылке. https://marketplace.visualstudio.com/items?itemName=ProBITools.MicrosoftRdlcReportDesignerforVisualStudio-18001
Microsoft подробно объясняет шаги:
Следующие шаги обобщают приведенную выше статью.
Добавление элемента управления Report Viewer в новый веб-проект:
Создайте новый пустой веб-сайт ASP.NET или откройте существующий проект ASP.NET.
Установите пакет NuGet управления средством просмотра отчетов с помощью консоли диспетчера пакетов NuGet. Из Visual Studio -> Инструменты -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов
Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms
Добавьте в проект новую страницу .aspx и зарегистрируйте сборку элемента управления средства просмотра отчетов для использования на странице.
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
Добавьте ScriptManagerControl на страницу.
Добавьте элемент управления Report Viewer на страницу. Фрагмент ниже можно обновить, чтобы он ссылался на отчет, размещенный на удаленном сервере отчетов.
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote"> <ServerReport ReportPath="" ReportServerUrl="" /></rsweb:ReportViewer>
Последняя страница должна выглядеть следующим образом.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Sample" %>
<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
<ServerReport ReportServerUrl="https://AContosoDepartment/ReportServer" ReportPath="/LatestSales" />
</rsweb:ReportViewer>
</form>
</body>
Если вы, как и я, попробовали несколько из этих методов и застряли на том этапе, когда у вас есть элемент управления на панели инструментов, и вы можете рисовать его в форме, но он исчезает из формы и помещает его в компоненты, тогда просто отредактируйте конструктор и добавьте следующее в соответствующую область InitializeComponent(), чтобы сделать его видимым:
this.Controls.Add(this.reportViewer1);
or
[ContainerControl].Controls.Add(this.reportViewer1);
Вам также потребуется внести коррективы в положение и размер вручную после того, как вы добавите элемент управления.
Конечно, это не лучший ответ, но если вы застряли и вам просто нужно выполнить работу, пока у вас не будет больше времени, чтобы понять это, это должно помочь.