GAC中必须安装Microsoft.VisualStudio.TextLogic版本14
Getting a Microsoft.VisualStudio.TextLogic version 14 must be installed in the GAC
最近我试用了 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 控件放到 window 上。它确实花了大约 6 周的时间才最终让它工作(比它应该的时间更长),但我使用 ClickOnce 部署将它部署到一台机器上。
接下来我想我要向自己证明我可以再做一次,这次我要记下我所做的事情。我已尝试两次复制相同的简单应用程序,但我不断收到以下消息:
这根本行不通,因为这让我们又回到了同样的问题 - 某些管理员必须在附近才能安装此应用程序。我们不希望那样。以下是我采取的步骤:
- 使用 VS 中的程序包管理器控制台安装了 Microsoft.SqlServer.Types 版本 14.0.314.76。
- 已使用程序包管理器控制台安装 Microsoft.ReportingServices.ReportViewerControl.Winforms 版本 140.340.80
- 在 XAML 中,我在 window 标签中包含了命名空间 Microsoft.ReportViewer.WinForms。
- 添加了对 System.Windows.Forms 和 WindowsFormsIntegration
的引用
在 window 的 Grid 标签中添加了以下 XAML:
设置 ClickOnce 部署
由于涉及中文位置文件的错误,我进入了项目的发布选项卡 |应用程序文件并将所有以 "zh-" 开头的文件发送到排除发布状态。
然后我将它发布到网络共享和 运行 ClickOnce Setup.exe 在一台没有安装旧 ReportViewer 的机器上使用没有权限的帐户。
我收到了我在 post 开始时给出的 "System Update Required" 消息。
为什么会这样?为什么需要在 GAC 中安装 Microsoft.VisualStudio.Text.Logic?特别是对于一个甚至根本不连接到任何数据库的应用程序?
因为它看起来是 GAC 中 ReportViewer 文件的重要 DLL,其中还包含 Microsoft.VisualStudio.Text.Logic DLL 到包中。因此,除非找到丢失的 DLL,否则它会显示错误。
尝试以下步骤将 DLL 添加到项目工具栏中:
Run the below command in the Package Manager Console:
Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -Version 140.340.80
Right click in anywhere in the toolbox and then select Choose Items...
On the .NET Framework Components, click on Browse
Select the Microsoft.ReportViewer.WinForms.dll from the NuGet package you installed.
The new control should display within the toolbox. And then try to publish your project with this new reportviewer.
如 Dmitry 的评论所分享的 link 中所述。
最近我试用了 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 控件放到 window 上。它确实花了大约 6 周的时间才最终让它工作(比它应该的时间更长),但我使用 ClickOnce 部署将它部署到一台机器上。
接下来我想我要向自己证明我可以再做一次,这次我要记下我所做的事情。我已尝试两次复制相同的简单应用程序,但我不断收到以下消息:
这根本行不通,因为这让我们又回到了同样的问题 - 某些管理员必须在附近才能安装此应用程序。我们不希望那样。以下是我采取的步骤:
- 使用 VS 中的程序包管理器控制台安装了 Microsoft.SqlServer.Types 版本 14.0.314.76。
- 已使用程序包管理器控制台安装 Microsoft.ReportingServices.ReportViewerControl.Winforms 版本 140.340.80
- 在 XAML 中,我在 window 标签中包含了命名空间 Microsoft.ReportViewer.WinForms。
- 添加了对 System.Windows.Forms 和 WindowsFormsIntegration 的引用
在 window 的 Grid 标签中添加了以下 XAML:
设置 ClickOnce 部署
由于涉及中文位置文件的错误,我进入了项目的发布选项卡 |应用程序文件并将所有以 "zh-" 开头的文件发送到排除发布状态。
然后我将它发布到网络共享和 运行 ClickOnce Setup.exe 在一台没有安装旧 ReportViewer 的机器上使用没有权限的帐户。
我收到了我在 post 开始时给出的 "System Update Required" 消息。
为什么会这样?为什么需要在 GAC 中安装 Microsoft.VisualStudio.Text.Logic?特别是对于一个甚至根本不连接到任何数据库的应用程序?
因为它看起来是 GAC 中 ReportViewer 文件的重要 DLL,其中还包含 Microsoft.VisualStudio.Text.Logic DLL 到包中。因此,除非找到丢失的 DLL,否则它会显示错误。
尝试以下步骤将 DLL 添加到项目工具栏中:
Run the below command in the Package Manager Console:
Install-Package Microsoft.ReportingServices.ReportViewerControl.Winforms -Version 140.340.80
Right click in anywhere in the toolbox and then select Choose Items...
On the .NET Framework Components, click on Browse
Select the Microsoft.ReportViewer.WinForms.dll from the NuGet package you installed.
The new control should display within the toolbox. And then try to publish your project with this new reportviewer.
如 Dmitry 的评论所分享的 link 中所述。