2012-10-21 134 views
6

我知道像NuGet這樣的包管理器可以幫助我們,當我們想使用第三方組件時。爲什麼我們需要像Nuget這樣的包管理器?

從的NuGet Codeplex上頁:

的NuGet是一個免費,開源開發者專注包管理 有關簡化的 過程中引入第三方庫到.NET應用程序在.NET平臺的意圖系統 開發。

有大量有用的第三方開放源代碼庫進行 那裏的.NET平臺,但對於那些不熟悉OSS 的生態系統,它可以拉這些庫到項目疼痛。

讓我們ELMAH作爲一個例子。這是一個很好的錯誤日誌記錄工具 這對其他圖書館沒有依賴關係,但仍然是一個挑戰 整合成一個項目。這些都是需要的步驟:

Find ELMAH 
Download the correct zip package. 
「Unblock」 the package. 
Verify its hash against the one provided by the hosting environment. 
Unzip the package contents into a specific location in the solution. 
Add an assembly reference to the assembly. 
Update web.config with the correct settings which a developer needs to search for. 

這是一個沒有依賴的庫。試想一下,這樣做 爲NHibernate.Linq其中有每個需要 類似的步驟多的依賴。我們可以做得更好!

的NuGet自動爲包中的所有這些常見的和繁瑣的任務 以及它的依賴。它消除了幾乎所有的 結合第三方的開源庫到項目的 源代碼樹的挑戰

這些步驟是當我們要建立一個項目,我們做簡單的任務。它僅適用於自動添加第三方組件並判定配置文件中出現錯誤的機會?或者它有更多的責任!

+0

我不確定你在問什麼,你是否期待它做別的事情? – Betty

+0

我認爲Nuget想要解決的問題並不是什麼大問題!在某些情況下,它會增加團隊工作的複雜程度,特別是在處理初級程序員時。 – Navid

+0

你需要它,因爲它可以做所有這些事情..? – Patrick

回答

17

它的價值隱藏在公開:一個包經理如NuGet可以幫助您處理使用自動化的軟件依賴關係。許多人認爲它只適用於開源或第三方組件,但您也可以將它用於自己的內部軟件包。

有關的NuGet偉大的事情是(僅舉幾例利益):

  • 的NuGet鼓勵組件的重用,因爲你毫無保留地依賴實際的「版本」(即使發行前),而不是分支源
  • 你可以擺脫二進制腹脹您的VCS存儲庫(包還原功能)
  • 它迫使包創作者思考的包將被消耗的方式,使他們包安裝過程中與部件的構成處理(誰知道如何配置軟件包,而不是軟件包創建者?)。以ELMAH爲例。
  • 上的包庫自動包創建和發佈實際上是連續遞送(用於軟件組件)的形式。 OctopusDeploy甚至更進一步,使整個網站能夠打包整個部署。
  • 的NuGet鼓勵,有時強制你遵循一些ALM最佳實踐。例如。一個軟件包有一個版本,所以你必須考慮你的版本策略(例如SemVer。ORG)
  • 的NuGet與SymbolSource.org(其中也有一個社區版來建立自己的)集成:這允許一個輕鬆地調試發佈的程序包,而無需運送這些信息都具有一個或多個包時
  • 庫很容易讓組織保持相關性矩陣,甚至建立一個正在使用的幾個項目OSS許可證的庫存
  • 的NuGet通知您可用的軟件包更新
  • 創建包使人想到組件架構(所有的依賴關係也應該被打包)
  • 包的依賴關係是aut omatically解決了(所以你不能忘記任何)需要

上述清單並非詳盡無遺的時候

  • 的NuGet是足夠聰明,添加程序集綁定重定向,但我希望我渾身這個答案的關鍵優勢。我相信還有更多。

    乾杯, 澤維爾

  • +0

    謝謝。我認爲這些是隱藏的好處,我錯過了!優秀的職位。 – Navid

    3

    理由使用的NuGet是你沒有出貨的所有圖書館項目,降低了項目的規模。使用NuGet Power Tools,通過指定Packages.config文件中的軟件包版本,您將能夠在第一次運行項目時下載所有必需的庫。

    直播Exapmle:降低了項目的大小事宜,同時project.Like的部署,如果解決方案 有代碼和包200MB 500MB的大小,則額外的200MB真的 成本上傳項目中的每個time.Instead上傳混凝土 的我們需要在packages.config文件中設置它們的引用。

    相關問題