最近我尝试了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部署将其部署到一台机器上。
接下来,我想我会向自己证明我可以再次这样做,这次记下我做了什么。我已经尝试了两次复制相同的简单应用程序,但我不断收到以下消息:
这根本不会发生,因为这会让我们回到同样的问题 - 一些管理员必须靠近才能安装这个应用程序。我们不希望这样。这里简要介绍一下我采取的步骤:
在窗口的Grid标记中添加了以下XAML:
设置ClickOnce部署
由于涉及中文位置文件的错误,我进入了项目的发布标签|应用程序文件并将所有以“zh-”开头的文件发送到“排除发布状态”。
然后我将其发布到网络共享,并在未使用没有权限的帐户安装旧版ReportViewer的计算机上运行ClickOnce Setup.exe。
我在本文开头附近收到了“需要更新系统”消息。
为什么会这样?为什么要在GAC中安装Microsoft.VisualStudio.Text.Logic?特别是对于甚至根本没有连接到任何数据库的应用程序?
答案 0 :(得分:1)
因为它在GAC中查找了ReportViewer文件的重要DLL,其中还包括Microsoft.VisualStudio.Text.Logic DLL到包中。因此,除非找到丢失的DLL,否则它会显示错误。
尝试以下步骤将DLL添加到项目工具栏中:
在程序包管理器控制台中运行以下命令:
Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -Version 140.340.80
右点击工具箱中的任意位置,然后选择选择项目...
在 .NET Framework组件上,单击浏览
从您安装的NuGet包中选择 Microsoft.ReportViewer.WinForms.dll 。
- 醇>
新控件应显示在工具箱中。然后尝试使用这个新的reportviewer发布您的项目。
正如 Dmitry 的评论共享的link中提到的那样。