最近我尝试了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中
接下来我想我会向自己证明我可以再次这样做,这次记录我做了什么。我已经试了两次重复相同的,简单的应用程序,但我不断收到以下消息:
这不会在所有做的,因为这需要我们又回到了同样的问题 - 一些管理员必须在附近安装此应用程序。我们不希望这样。简而言之,我采取了以下步骤:
- 使用VS中的软件包管理器控制台安装Microsoft.SqlServer.Types 14.0.314.76版。
- 已安装Microsoft.ReportingServices.ReportViewerControl.Winforms使用包管理器控制台版本140.340.80
- 在XAML中,我在窗口标记中包含名称空间Microsoft.ReportViewer.WinForms。
- 到System.Windows.Forms的添加引用和WindowsFormsIntegration程序
添加窗口的网格标签下面的XAML代码:
设置ClickOnce部署
由于涉及中文位置文件的错误,我进入了项目的发布选项卡|应用程序文件并将所有以“zh-”开头的文件发送到“排除发布状态”。
然后我把它发布到网络共享并运行的ClickOnce的Setup.exe它不具有使用无特权的帐户安装上了年纪的ReportViewer的机器上。
我在本文开头附近收到了“需要系统更新”的消息。
这是怎么发生的?为什么它需要Microsoft.VisualStudio.Text.Logic安装在GAC中?特别是对于甚至根本不连接任何数据库的应用程序?