2017-07-20 66 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提。

相關問題