最近我嘗試了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中?特別是對於甚至根本不連接任何數據庫的應用程序?