2017-07-20 40 views
4

最近我尝试了Visual Studio 2017.我们有一个MSDN订阅。我们正在编写一些内部应用程序,我们正在编写WPF应用程序。这些应用程序需要安装在用户没有管理权限的用户计算机上(Windows 7到Windows 10)。在这一点上,最让我们受伤的是让ReportViewer控件安装而不需要管理员。 VS 2015和更老的版本是不可能的,因为(据我了解)VS 2015及更早版本,ReportViewer控件是一个需要管理员权限才能安装的ActiveX控件。我被告知,在VS 2017中,新的ReportViewer控件(版本14)不是ActiveX控件;它不需要管理员权限。这是一个好消息,我告诉我的同事们。为了演示这个,我使用VS 2017编写了一个非常简单的WPF应用程序。我所做的只是将ReportViewer控件放到窗口中。它需要大约6周时间才能最终实现(比本应该有的时间长),但是我使用ClickOnce部署将它部署到了一台机器上。获取Microsoft.VisualStudio.TextLogic版本14必须安装在GAC中

接下来我想我会向自己证明我可以再次这样做,这次记录我做了什么。我已经试了两次重复相同的,简单的应用程序,但我不断收到以下消息:

enter image description here

这不会在所有做的,因为这需要我们又回到了同样的问题 - 一些管理员必须在附近安装此应用程序。我们不希望这样。简而言之,我采取了以下步骤:

  1. 使用VS中的软件包管理器控制台安装Microsoft.SqlServer.Types 14.0.314.76版。
  2. 已安装Microsoft.ReportingServices.ReportViewerControl.Winforms使用包管理器控制台版本140.340.80
  3. 在XAML中,我在窗口标记中包含名称空间Microsoft.ReportViewer.WinForms。
  4. 到System.Windows.Forms的添加引用和WindowsFormsIntegration程序
  5. 添加窗口的网格标签下面的XAML代码:

  6. 设置ClickOnce部署

  7. 由于涉及中文位置文件的错误,我进入了项目的发布选项卡|应用程序文件并将所有以“zh-”开头的文件发送到“排除发布状态”。

然后我把它发布到网络共享并运行的ClickOnce的Setup.exe它不具有使用无特权的帐户安装上了年纪的ReportViewer的机器上。

我在本文开头附近收到了“需要系统更新”的消息。

这是怎么发生的?为什么它需要Microsoft.VisualStudio.Text.Logic安装在GAC中?特别是对于甚至根本不连接任何数据库的应用程序?

回答

1

因为它看起来是GAC中ReportViewer文件的重要DLL,它还在包中包含了Microsoft.VisualStudio.Text.Logic DLL。因此,它会显示错误,除非它找到缺少的DLL。

尝试以下步骤添加DLL到你的项目的工具栏:

  1. 运行下面的命令,在软件包管理器控制台

    Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -Version 140.340.80 
    
  2. 右键点击在任何地方在工具箱中,然后选择选择项目...

  3. .NET框架组件,点击浏览

  4. 从你安装了NuGet包选择Microsoft.ReportViewer.WinForms.dll

  5. 新控件应显示在工具箱中。然后尝试使用这个新的reportviewer发布您的项目。

如由梅德的评论共享一个link提。

相关问题