簡體   English   中英

NuGet - 在單一解決方案中管理和刪除多版本軟件包

[英]NuGet - managing and removing multi version packages in single solution

情景

n個項目的一個VS解決方案。 項目A引用包Y v1,項目B引用包Y v2。 現在無法使用解決方案級別的NuGet包管理對話框更新解決方案中所有項目的包Y的所有引用,只有在所有項目引用相同版本的包Y時才可以執行此操作。不是很大只處理兩個項目,但是我正在處理許多項目,這些項目通過糟糕的包管理引用了許多軟件包版本,因為它們都應該引用相同的版本。

在我下午寫一個控制台應用程序之前。 自動更新解決方案的所有package.config文件,以便每個引用的包只通過它的最新版本引用(最新引用,而不是最新的,帶有異常/警告等)....是否有工具/方法可用這已經? 或者其他一些我不知道的方法?

您可以在Nuget Package Manager for Solution中完成此操作(要查找菜單,右鍵單擊解決方案或進入Tools-> Library Package Manager)。 此對話框中的“更新”選項卡將建議更新適用於更新的多個項目。 從“已安裝”選項卡卸載時也是如此。

或者打開解決方案,打開NuGet控制台,運行“Update-Package”以更新所有項目的所有包。 它還可以用於更新特定的包/項目:

Update-Package [-Id] <string> [-IgnoreDependencies] [-ProjectName <string>] [-Version <string>] [-Safe] [-Source <string>] [-IncludePrerelease]

它將找到與對話框相同的更新,只需確保在“Package Source:”下拉列表中選擇了正確的Feed(或“All”)。

例:

PM> install-package NUnit -version 2.5.9.10348 -ProjectName ProjectA
Successfully installed 'NUnit 2.5.9.10348'.
Successfully added 'NUnit 2.5.9.10348' to ProjectA.

PM> install-package NUnit -version 2.5.10.11092 -ProjectName ProjectB
Successfully installed 'NUnit 2.5.10.11092'.
Successfully added 'NUnit 2.5.10.11092' to ProjectB.

PM> update-package
Updating 'NUnit' from version '2.5.9.10348' to '2.6.0.12054' in project 'ProjectA'.
Successfully removed 'NUnit 2.5.9.10348' from ProjectA.
Successfully installed 'NUnit 2.6.0.12054'.
Successfully added 'NUnit 2.6.0.12054' to ProjectA.
Successfully uninstalled 'NUnit 2.5.9.10348'.
Updating 'NUnit' from version '2.5.10.11092' to '2.6.0.12054' in project 'ProjectB'.
Successfully removed 'NUnit 2.5.10.11092' from ProjectB.
Successfully added 'NUnit 2.6.0.12054' to ProjectB.
Successfully uninstalled 'NUnit 2.5.10.11092'.

首先,僅更改xml文件不足以讓NuGet更改引用。 實際上,有時在手動修改packages.config文件時會出現錯誤。 包管理器控制台能夠更新解決方案中的所有包; 你可以簡單地調用“Get-Project -All | Update-Package”命令。

其次,在調用此命令之前,請確保您有適當的包源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM