【问题标题】:Reportviewer tool missing in visual studio 2017 RCVisual Studio 2017 RC 中缺少 Reportviewer 工具
【发布时间】:2016-11-21 06:02:06
【问题描述】:

我刚开始在名为 Visual Studio 2017 RC 的新版 Visual Studio 中编写报告软件,但刚刚注意到 Windows 窗体和 WPF 应用程序模板中缺少核心报告查看工具。谁能告诉我为什么 reportviewer 工具从 Visual Studio 2017 中消失了?没有它真的很麻烦。在新的视觉工作室中是否有任何替代方法可以使用此工具?

【问题讨论】:

    标签: c# wpf windows-forms-designer visual-studio-2017


    【解决方案1】:

    ** 更新**:2019 年 11 月 19 日

    Microsoft 已在其 Nuget 库中发布了新版本的控件 150.1400.0。我的简短测试表明它在 150.1357.0150.1358.0 没有的表单设计器中再次起作用。这包括能够在控件本身上调整和修改 ReportViewer 任务的大小。

    ** 更新**:2019 年 8 月 18 日

    删除最新版本并回滚到 150.900.148.0 似乎适用于我正在使用 VS2017 和 VS2019 的多台计算机。

    您可以在 Nuget 解决方案包管理器中回滚到 150.900.148。它的工作原理与以前的版本类似。使用下拉框选择旧版本。

    手动删除对 150.900 版本 ReportViewer 的引用并重新读取它们可能比修复它们更容易。

    请记住在更改工具箱条目后重新启动 Visual Studio。

    更新:2019 年 8 月 7 日

    已发布更新版本的 ReportViewer 控件,可能与 Visual Studio 2019 一致。我使用的是 V150.1358.0。

    按照此答案中的说明获得设计器工具箱中的控件。但是一旦放在表单上它就不会显示。该控件作为非可视组件显示在表单下方。

    这是根据 Microsoft SQL BI 支持设计的。这是负责控制的组。

    虽然您仍然无法直接与控件交互,但这些附加步骤提供了一种解决方法,因此可以在表单上调整控件的大小。虽然现在可见,但设计器将控件视为不存在。

    我根据 Microsoft SQL BI 支持的建议创建了一个反馈请求。请考虑对其进行投票以引起 Microsoft 的注意。

    Microsoft Azure Feedback page - Restore Designtime features of the WinForms ReportViewer Control

    其他步骤:

    • 将报表查看器添加到 WinForm 后
    • 将面板控件添加到 WinForm。
    • 在表单的 form.designer.cs 文件中,将 Reportviewer 控件添加到面板中。

        // 
        // panel1
        // 
        this.panel1.Controls.Add(this.reportViewer1);
      
    • 返回表单设计器,您应该会在面板上看到reportViewer

    • 在“属性”面板中,在控件列表下拉菜单中选择 ReportViewer
    • 将 reportViewer 的 Dock 属性设置为 Fill

    现在您可以通过实际与面板交互来定位 reportViewer。

    更新:Microsoft 于 2017 年 4 月 18 日发布了document,描述了如何在 Visual Studio 2017 中配置和使用报告工具。

    Visual Studio 2017 的工具箱中默认没有安装ReportViewer 工具。安装扩展 Microsoft Rdlc Report Designer for Visual Studio,然后将其添加到 ToolBox 会导致出现在表单下方的非可视组件。

    Microsoft 支持告诉我这是一个错误,但截至 2017 年 4 月 21 日,它“按设计工作”。

    每个需要ReportViewer的项目都需要遵循以下步骤。

    • 如果工具箱中有ReportViewer,请将其删除。突出显示,右键单击并删除。
      • 您必须有一个打开表单的项目才能执行此操作。

    于 2019 年 8 月 7 日编辑 - 当前版本的 RDLC 报表设计器扩展似乎不再干扰。您需要它来实际编辑报告。

    • 如果您安装了 Microsoft Rdlc Report Designer for Visual Studio 扩展,请将其卸载。

    • 关闭您的解决方案并重新启动 Visual Studio。这是 很关键的一步,如果VS没有重启就会报错 在解决方案之间切换。

    • 打开您的解决方案。
    • 打开 NuGet 包管理器控制台 (Tools/NuGet Package Manager/Package Manager Console)
    • 在 PM> 提示符下输入此命令,大小写很重要。

      Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms

      您应该会看到描述包安装的文字。

    现在我们可以暂时将ReportViewer工具添加到工具箱中。

    • 在工具箱中右击并使用Choose Items...

    • 我们需要浏览到位于解决方案Packages 文件夹中的正确 DLL,因此请点击浏览按钮。

    • 在我们的示例中,我们可以粘贴到包文件夹中,如包管理器控制台的文本所示。

      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 工具。您不能将其用于其他项目。

    • 您可以保存项目,一切顺利。

    请记住,当您需要使用ReportViewer 打开项目时,请务必重新启动 Visual Studio,以便从正确的位置加载 DLL。如果您尝试使用带有ReportViewer 的表单打开解决方案而不重新启动,您将看到指示“The variable 'reportViewer1' is either undeclared or was never assigned.”的错误。

    如果您将新项目添加到您需要创建项目的同一解决方案中,保存解决方案,重新启动 Visual Studio,然后您应该能够将 ReportViewer 添加到表单中。我第一次看到它不起作用并显示为非可视组件。

    当发生这种情况时,从表单中删除组件,从项目中删除 Microsoft.ReportViewer.* 引用,保存并重新启动通常可以工作。

    【讨论】:

    • @Rich Shealer 与 MVC 项目的流程相同吗?
    • @KinjalPatel 我不使用 MVC,所以我不能给你一个高质量的答案。
    • 另外一件影响我的事情:我不得不从定位 .NET Framework 4 Client Profile 切换到 .NET Framework 4
    • 我可以确认这些步骤不适用于 Microsoft.ReportingServices.ReportViewerControl.Winforms 150.1358.0。对我有用的是将扩展降级为 140.1000.523
    • @IlyasFoo - 感谢您的确认。请在此答案的顶部查看我的更新。有一个指向 Microsoft 的反馈链接,可以投票让 Microsoft 修复它。
    【解决方案2】:

    更新:此答案适用于 Visual Sudio 2017 和 2019

    对我来说,它通过以下三个步骤起作用:

    1. 将 Visual Studio 更新到最新版本。
    2. 通过以下方式将报告/报告向导添加到添加/新建项目菜单:
      • 转到 Visual Studio 菜单工具/扩展和更新
      • 从左侧面板中选择在线
      • 搜索 Microsoft Rdlc Report Designer for Visual Studio
      • 下载并安装它。
    3. 通过以下方式添加报表查看器控件:

      • 转到 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 文件拖放到 Visual Studio Toolbox 窗口中。

    对于 WebForms 应用程序:

    1. 一样。
    2. 一样。
    3. 通过以下方式添加报表查看器控件:

      • 转到 NuGet 包管理器

      • 安装 Microsoft.ReportingServices.ReportViewerControl.WebForms

      • 转到包含 Microsoft.ReportViewer.WebForms.dll 文件的文件夹:%USERPROFILE%\.nuget\packages\microsoft.reportingservices.reportviewercontrol.webforms\140.1000.523\lib\net40 em>
      • Microsoft.ReportViewer.WebForms.dll 文件拖放到 Visual Studio Toolbox 窗口中。

    就是这样!

    【讨论】:

      【解决方案3】:

      请注意,上述@Rich Shealer 描述的添加报告服务的过程将在您每次启动不同的项目时进行迭代。为了避免这种情况:

      1. 如果您可能需要设置另一台计算机(例如,在家中没有互联网),请将您从市场上下载的安装程序保存在安全的地方,即:

        • Microsoft.DataTools.ReportingServices.vsix 和
        • Microsoft.RdlcDesigner.vsix
      2. 从您创建的应用程序的包或 bin 文件夹中获取以下库,其中包含报告服务:

        • Microsoft.ReportViewer.Common.dll
        • Microsoft.ReportViewer.DataVisualization.dll
        • Microsoft.ReportViewer.Design.dll
        • Microsoft.ReportViewer.ProcessingObjectModel.dll
        • Microsoft.ReportViewer.WinForms.dll
      3. 从上面的 1 个组件安装 2 个组件

      4. 将上述 2 中的 dll 添加为引用(Project>References>Add...)
      5. (可选)将报告选项卡添加到工具栏
      6. 将项目添加到报告选项卡
      7. 浏览到 bin 文件夹或您拥有上述 dll 的位置并添加它们

      您现在可以开始了! ReportViewer 图标将添加到您的工具栏,当您想将新项目...(报告)添加到您的项目时,您现在还可以找到添加到您的通用模板列表中的报告和报告向导模板

      注意:使用 Nuget 包管理器进行设置时,报表和报表向导模板在报表下分组。但是,使用我上面描述的方法不会在已安装的模板中添加报告分组,但我认为这没有任何问题,因为它使您能够在没有互联网的情况下快速集成 rdlc 并且无需每次都从 Nuget 下载已有的内容!

      【讨论】:

      • 嗨@Hannington Mambo,感谢您提供有用的解决方案。我已经完成了您的步骤,现在我可以在我的工具箱中看到reportviewer控件,我可以将它添加到我的表单中,但我没有报告和我的添加新项目面板中的报告向导项目。你能帮帮我吗...
      • 很高兴能帮上忙!我能够在我的 Add New Item... 安装模板中获得它们。我解释说报告模板组将不可用。有时您可能需要关闭 vs,删除和添加 dll
      【解决方案4】:

      下载适用于 Visual Studio 的 Microsoft Rdlc 报表设计器 从这个链接。 https://marketplace.visualstudio.com/items?itemName=ProBITools.MicrosoftRdlcReportDesignerforVisualStudio-18001

      微软详细解释步骤:

      https://docs.microsoft.com/en-us/sql/reporting-services/application-integration/integrating-reporting-services-using-reportviewer-controls-get-started?view=sql-server-2017

      以下步骤对上述文章进行了总结。

      将报表查看器控件添加到新的 Web 项目:

      1. 创建一个新的 ASP.NET 空网站或打开一个现有的 ASP.NET 项目。

      2. 通过 NuGet 包管理器控制台安装报表查看器控件 NuGet 包。 从 Visual Studio -> 工具 -> NuGet 包管理器 -> 包管理器控制台

        Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms
        
      3. 将新的 .aspx 页面添加到项目并注册报表查看器控件程序集以在页面中使用。

        <%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=15.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>
        
      4. 向页面添加 ScriptManagerControl。

      5. 将报表查看器控件添加到页面。可以更新下面的 sn-p 以引用托管在远程报表服务器上的报表。

         <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>
      

      【讨论】:

      • 我找到的关于该主题的最佳说明。在最后一步之前,一切都按描述进行:“ReportViewer 现在位于工具箱中。”它不在那里。有什么想法吗?
      • 微软会放弃 SSRS 吗?
      • @Nate 你的意思是微软将来不会支持 SSRS 吗?如果你是这个意思,上面的文章来自微软。所以微软到现在都支持 SSRS。
      【解决方案5】:

      如果您像我一样尝试了这些方法中的一些并被困在您拥有工具箱中的控件并且可以在表单上绘制它但它从表单中消失并将其放在组件中的点,然后简单地编辑设计器并在 InitializeComponent() 的适当区域添加以下内容以使其可见:

      this.Controls.Add(this.reportViewer1);
      
      or
      
      [ContainerControl].Controls.Add(this.reportViewer1);
      

      添加控件后,您还需要手动调整位置和大小。

      肯定不是一个很好的答案,但如果您遇到困难并且只需要现在完成工作,直到您有更多时间弄清楚,它应该会有所帮助。

      【讨论】:

      • 我最终通过 nuget 包管理器将我的版本降级到以下版本,它开始正常运行:Microsoft.ReportingServices.ReportViewerControl.Winforms 版本 140.1000.523
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      相关资源
      最近更新 更多