簡體   English   中英

有沒有一種聰明的方法來處理NuGet中的包依賴?

[英]Is there a smart way to deal with package dependencies in NuGet?

我們正在開發一個具有各種“共同”依賴關系(Unity,Prism等)的WPF應用程序。

在添加新項目然后為每個項目設置NuGet包依賴項時都很好,但是當涉及到升級時,它真的很痛苦,因為這意味着我們必須遍歷每個項目,刪除舊的引用然后重新獲取最新的包來自NuGet。

例如,今天我的任務是將Prism從5.0升級到6.0(無論如何都有破壞性更改),這意味着除了修復我必須通過每個項目的所有命名空間沖突等之外,刪除舊的引用,添加新的依賴性並沖洗並重復。

我的問題是,有沒有更聰明的方法來解決這個問題,還是這是標准方法?

提前謝謝了,

更新:

我主要關心的是沒有出現在包管理器上的“主要”升級。 版本5.0 - > 6.0升級將被視為主要升級,因此,在NuGet包管理器中不會對其應用自動更新。

我不認為NuGet能夠自動為我做這個,因為這樣的升級可能(並且經常)包括重大改變但我想知道是否有一種方法來進行主要升級比從刪除引用更少痛苦每個項目的項目和packages.config,然后使用NuGet重新添加它們。 對於一個相對較大的項目,這非常耗時,我想知道是否有人有更好的方法來管理這種依賴。

如果您使用VS2013,則可以通過右鍵單擊解決方案並選擇“管理解決方案的NuGet包”來管理所有NuGet包。 這將打開一個對話框,您可以在其中查看為解決方案中的所有項目安裝的所有軟件包以及所有可用更新的軟件包。 當您升級軟件包時,VS會處理所需的所有參考更改。 如果包裝有重大變化,那么你仍然可以解決這些問題。

免責聲明:我從未參與WPF項目/解決方案,但對於Web / Forms應用程序,NuGet包以這種方式處理。

我能理解你的痛苦,因為我有類似你的問題,但沒有簡單的方法。 但當然,您需要以不同的方式打破日常開發和依賴關系更新推出的過程。

對於我工作的項目,我使用在您使用的解決方案之間共享的公共存儲庫路徑,並且您需要刪除所有解決方案文件夾引用以獲得干凈狀態。

對於您處理的每個解決方案,您需要修改指向公共目標存儲庫的屬性組(我使用相對路徑)

完成所有設置后,您可以使用腳本實際執行更新(我使用的是python運行時腳本)

你可以實際看一下設置常見的nuget-packages-folder以獲取詳細信息的參考更新 ,但它看起來就像你在尋找自動化過程一樣

嘗試在Xamarin Studio中升級多個包含alpha通道問題的軟件包時,我遇到了類似的問題,這也沒有VS 2015 NuGet管理器的細節。 我最終編寫了一個非常簡單的PowerShell腳本 ,我每天運行多次。

#
# This script updates local ibGib NuGet packages for mobileGib Android app solution.
# For convenience in copy+paste in manager console:
# ../UpdateLocalNugetPackages.ps1

Update-Package commonGib
Update-Package ibGib
Update-Package languageGib.Biz
Etc.

我相信你可以定制你的NuGet命令以滿足你的需求。

此外,如果您不了解它,您一定要閱讀NuGet命令行參考 我可能會弄錯,但聽起來你的場景可以使用Update命令。

暫無
暫無

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

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