2017-07-31 26 views
0

我其實正在考慮使用NuGet的親和好處。在我們目前的軟件中,我們將每個外部參考存儲在一個通用的參考文件夾中(這是對我們的軟件版本控制系統的承諾)。隨着時間的推移,這種方法變得越來越痛苦,因爲我們必須將不同的版本存儲到同一個庫中。Nuget:檢查包文件夾中的好主意

由於我們的開發人員有時在客戶站點(並非所有客戶都提供互聯網連接...),我們不會直接使用NuGet,因爲NuGet軟件包無法恢復。

基於此,我實際上正在考慮使用NuGet並在我們的SW版本控制系統中存儲packages文件夾。

有沒有人知道這個解決方案是否存在一些缺點?有人有更好的建議嗎?

Thx。

回答

0

我會反對在您的版本控制系統中存儲外部nuget軟件包。

  1. 這不是你的應用程序的責任存檔第三方軟件包。如果你需要關注這個風險,那麼建立一個適用於這種風險的解決方案(例如:使用私人nuget存儲庫進行適當備份)。
  2. 避免代碼庫中的重複 - 如果您使用正確發佈的軟件包,那麼packages.config文件內容足以可靠地再現應用程序所需的確切依賴關係。
  3. 同步是一種努力 - 保持packages.config和packages文件夾處於同步狀態 - 一旦開始將它們包含在源代碼控制中,每個使用包的開發者都會監視並添加或刪除包到源代碼管理。
    1. 如果開發者忘記添加,那麼本地構建仍然失敗。
    2. 如果他們忘記刪除不再需要的部分,那麼您的可下載集合將包含垃圾。
  4. VCS數據集大小 - 存儲它們將不必要地擴大您的版本控制存儲。通常這些軟件包包含N個不同的平臺dll,工具和其他非常快速的東西。如果你不斷更新你的依賴關係,那麼在10年後你的VCS歷史將包含大量不相關的垃圾。存儲是便宜的,但仍然..

相反,考慮有一個私人nuget存儲庫的目的是提供和存檔您的應用程序需要的軟件包,並建立您的項目,以檢查您的項目nuget存儲庫第一。如果開發人員需要使用離線編譯支持那麼他們可以建立項目庫的鏡子上自己創建盒子和配置回購以下備用結構:

  1. 開發本地項目庫(如:文件夾)
  2. 共享項目信息庫(例如:Nuget.Server
  3. (nuget。org)

指南如何配置多個存儲庫可以在這裏找到:How to configure local Nuget Repository

相關問題