什么是NuGet?
NuGet(讀作New Get)是用于微軟.NET開發(fā)平臺的軟件包管理器,是一個Visual Studio的擴展。在使用Visual Studio開發(fā)基于.NET Framework的應(yīng)用時,NuGet能夠令你在項目中添加、移除和更新引用的工作變得更加快捷方便。
通過NuGet你可以很容易的訪問到其他開發(fā)者發(fā)布的軟件包,你也可以創(chuàng)建、分享或者發(fā)布自己的包到NuGet。微軟的EntityFramework、ASP.NET MVC等或者一些常用到的第三方軟件包:Json.NET、NUnit等都托管到NuGet上。
為什么要用NuGet?
上面說道NuGet實際上就是一個軟件包的托管平臺。用過VS的人可能都知道一個叫做VisualStudioGallery的網(wǎng)站,通過這個網(wǎng)站你可以下載使用一些VS的擴展工具、項目模板或者一些常用的軟件包,VS中也提供了一個叫做“擴展和更新”的工具能夠讓你輕松的訪問到VisualStudioGallery中的內(nèi)容。
那么NuGet和VisualStudioGallery有什么區(qū)別?我們?yōu)槭裁匆肗uGet?
NuGet和VisualStudioGallery的區(qū)別
首先NuGet是VS的一個擴展,而VisualStudioGallery是VS擴展的一個托管平臺,所以NuGet是包含在VisualStudioGallery內(nèi)的,其次NuGet和VisualStudioGallery的關(guān)注點不同,VisualStudioGallery主要是服務(wù)于VS為VS提供插件托管服務(wù)的平臺,
而NuGet是.NET軟件包的管理平臺,是為我們項目中使用的軟件包提供托管服務(wù)的。在項目開發(fā)中難免會引用一些其他人開發(fā)的類庫,NuGet就是為了方便我們引用各種類庫而存在的。
為什么要用NuGet?
一個大的項目不可能所有的功能都要自己去實現(xiàn),有句話說的好:“不要輕易造輪子”,最簡單直接的辦法就是使用別人造好的“輪子”。通常引用一個類庫到我們的項目中要先下載或找到類庫,然后復(fù)制到項目目錄,最后添加引用。
如果我們引用的類庫有更新的版本并且我們想使用的話又要重新添加引用,一兩個倒還好,如果引用數(shù)量較多的話重復(fù)添加引用是比較麻煩和枯燥的,并且要卸載引用的時候還是要經(jīng)過幾個步驟。
這也就是為什么推薦使用NuGet的原因,NuGet能夠讓我們輕松的實現(xiàn)對軟件包的引用、更新和卸載。
NuGet怎么使用?
前面已經(jīng)說了什么是NuGet以及我們?yōu)槭裁匆肗uGet,接下來我就通過一個簡單的控制臺程序來說說怎么用NuGet。
1.安裝NuGet
你可以從VS的擴展和更新中安裝NuGet。

或者從NuGet官方下載安裝包。

2.使用NuGet可視化管理器
通過可視化的NuGet管理器你可以瀏覽當(dāng)前項目已經(jīng)安裝的包或者瀏覽、搜索其他的包。


我們選中Newtonsoft.Json,在右側(cè)就會出現(xiàn)Newtonsoft.Json的詳細信息,選中要將Newtonsoft.Json下載到的項目,然后點擊安裝。NuGet會在解決方案目錄下創(chuàng)建packages目錄并將包下載到該目錄
下載完成后VS會自動將Newtonsoft.Json添加到我們的引用。


通過這個管理器你可以方便的對你引用的包進行可視化管理。

3.使用NuGet控制臺管理器
除了可視化的管理器外NuGet也為我們提供了一個控制臺應(yīng)用,通常我更喜歡使用控制臺管理器,因為使用簡單的命令我就能對包進行管理。
打開NuGet控制臺管理器。

通過 Install-Package “包名” 這個命令我們就能完成對Newtonsoft.Json這個包的引用。

除此之外還可以通過 get-help NuGet 來獲取其他命令的信息。

Get-Package :獲取當(dāng)前已經(jīng)安裝的包
UnInstall-Package :卸載某個包
Update-Package :升級某個包
等常用命令,更多命令以及NuGet的詳細內(nèi)容可以查看NuGet官方文檔
總結(jié)
NuGet的存在使得我們不需要過多的去考慮引用軟件包方面的各種問題,我們只需要記住幾個簡單的命令就能輕松的實現(xiàn)對軟件包引用。但它的作用不僅于此,你還可以創(chuàng)建自己的軟件包并發(fā)布到NuGet上
供他人使用,你也可以搭建自己的服務(wù)器來托管你的軟件包,這個對于大公司來說很實用,可以將內(nèi)部開發(fā)的軟件包統(tǒng)一托管起來,并且方便使用。后面我會繼續(xù)深入的分析NuGet的使用。
|