http://kb.cnblogs.com/page/143190/html
1. NuGet是什麼?
NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation that will help you use NuGet packages and create your own.java NuGet 是一個Visual Studio的擴展。在使用Visual Studio開發基於.NET Framework的應用時,NuGet可以令你在項目中添加、移除和更新引用的工做變得更加快捷方便。程序員
這就是說: 咱們每每在開發項目裏,會使用一些第三方的dll, 如:Newtonsoft.Json.dll (它爲咱們提供了進行序列化和反序列化解決方案, 頗有用,也很穩定,還頗有名氣)。web 可是,咱們每每也面臨隨着項目升級,對這些引入的第三方插件進行升級的可能和必要。瀏覽器 比方說,本來的項目是vs2008 + C# 3.5 實現的,並引入了Newtonsoft.Json.dll 2.0版本, 如今對項目升級成了Vs 2010 + C# 4.0。服務器 若是 你想或者必須將舊版本升級到最新版本才能工做或者僅是保持版本上的一致; 同時,Newtonsoft 提供Json.Net對C# 4.0 支持版本,即:Newtonsoft.Json.dll 4.0。app 你就須要到官網或者經過Google 去尋找它的最新版本,下載,解壓,而後替代等操做。 彷佛看上去,也沒多少複雜的事情, 也習覺得常了。誰叫咱引用別人的東西,只能跟着走了,習慣了這樣的更新,總比本身寫更快吧。maven
如今,NuGet 將這個過程系統化,令你能夠更加方便的查找你要的第三方的dll, 同時,還能夠爲你提供自動或者手動更新,而無需你在人肉搜索與更新了。工具 |
初次認識NuGet是在去年把項目升級爲MVC3的時候,當時看到工具菜單多一項Library Package Manager,右鍵項目文件多了一項Manage Nuget Packages...,這是個神馬玩意兒,當時是一頭霧水,後臺查了些資料才知到NuGet是 Visual Studio的一個擴展,引用dudu的話來講就是管理程序的包包,能夠參考msdn上這篇文章使用 NuGet 管理項目庫以及我們博客園站長dudu寫的程序員,用NuGet管理好你的類庫,有些相似java中經常使用的maven 學習
爲何要使用NuGet
簡單的說NuGet能夠是咱們的工做更方便,當咱們的項目裏要引用到的一些庫時候,好比JQuery、Newtonsoft.Json、log4net等,咱們須要從網上下載這些庫,而後依次拷貝到各個項目中,當有的類庫有更新時又不得再也不重複一遍非常繁瑣 ,這時就能夠考慮使用NuGet來幫咱們管理和更新這些類庫,並且更新類庫時會自動添加類庫的相關引用,方便至極。固然網上一些咱們經常使用的類庫更新頻率不是很高並且即使出了新版本咱們也不必老是保持最新,故這點對咱們的幫助比較有限,我的認爲NuGet最大的好處在於能夠搭建本身的類庫服務器,想一想一下吧,在一些較大些的公司裏面有不少的項目,而後其中有一些是整個組,甚至整個公司通用的類庫,當這些類庫有更新後咱們須要依次拷貝到咱們的項目,甚至於有時候咱們本身都搞不清楚各個項目裏的版本是否一致,有時偶爾一兩個項目忘了複製更新出現莫名其妙的錯誤,爲此頭疼不已,如今有了NuGet,世界今後而不一樣。
安裝NuGet擴展
要使用NuGet首先須要安裝它(在安裝了MVC3的系統上已自動安裝了NuGet)
1. 點擊 工具-->擴展管理器(R)...-->右上角搜索框輸入NuGet
2. 點擊 NuGetPackage Manager 項上面的下載按鈕開始下載NuGet
3. 下載完成後出現安裝頁面,點安裝開始安裝
4. 很快安裝完成,而後點擊關閉完成整個安裝
5. 安裝完後NuGet暫時不能用,須要從新啓動下VS才行,重啓後完畢後打開 擴展管理器(R)... 在已安裝的擴展裏能夠看到NuGet Package Manager已經安裝好了
使用NuGet下載須要的類庫
1. 打開NuGet管理界面
2. 出現以下界面,能夠在裏面找本身想要的類庫也能夠在右上角搜索裏面輸入關鍵字查找本身想要的類庫,找到合適本身的類庫後點install進行安裝
3. 這裏咱們選擇安裝Json.Net,點擊安裝好出現組件下載界面
4. 下載完成後會出現提示將類庫安裝到什麼項目,這裏咱們選擇安裝到TestConsole項目
5. 安裝完成後能夠看到已經安裝的Josn.Net顯示一個已安裝的小對勾
6. 打開項目引用能夠看到咱們剛選擇的類庫Newtonsoft.Json已經自動添加到項目引用中
使用命令行管理你的類庫
1. NuGet提供了命令行安裝方法,在菜單中選擇Package Manager Console,打開命令行控制檯
2. 出現NuGet控制檯界面,默認類庫源(Package source)爲官方站點,也能夠指向本身搭建的本地或內網站點,Default project表示默認將下載的類庫添加到那個項目的引用中
3. NuGet控制檯有幾個經常使用命令
Get-Package 獲取當前項目已經安裝的類庫
Install-Package 安裝指定類庫,命令格式以下:Install-Package 類庫ID,如Install-Package Newtonsoft.Json 這裏須要注意的是類庫的ID是惟一的,指向命令後會自動搜索指定類庫源裏指定ID類庫,若找到則自動下載並添加引用,找不到則會出現找不到類庫的提示
Uninstall-Package 卸載指定類庫,命令格式以下:Uninstall-Package 類庫ID,如Uninstall-Package Newtonsoft.Json
Update-Package 更新指定類庫,命令格式以下:Update-Package 類庫ID,如Update-Package Newtonsoft.Json
ps:剛開始不熟悉時可使用界面方式下載和更新類庫,有必定經驗後仍是建議使用控制檯添加、更新類庫這樣很方便,因爲使用控制檯須要知道類庫的準確ID,能夠到http://www.nuget.org/packages這裏去查找,把本身經常使用的ID記錄下方便之後使用
NuGet相對於咱們最重要的功能是可以搭建本身的NuGet服務器,實現公司內部類庫的輕鬆共享更新。在安裝好NuGet擴展後,咱們已經可以經過NuGet輕鬆下載本身須要的類庫,下面來講一說如何將本身的項目類庫進行打包發佈
使用圖形界面打包本身的類庫
NuGet可使用NuGet.exe在命令行下進行類庫打包,也可使用圖形化界面進行打包,估計不少朋友都和我同樣對不熟悉的命令行有些感冒,因此在此僅講述下使用圖形化界面進行類庫打包
1. 首先下載 包包管理器 NuGetPackageExplorer,顧名思義,包包管理器能夠用來建立新的類庫包,也能夠瀏覽已經建立好的類庫包
2. 下載完成後,雙擊 NuGetPackageExplorer.application 進行安裝,安裝完成後會在桌面上生成一個NuGet Package Explorer 的快捷方式
3. 雙擊NuGet Package Explorer出現啓動界面,選擇Create a new package(Ctrl+N)建立一個新包
4. 選擇菜單 Edit > Edit Package Metadata (或者 CTRL + K) 編輯包包信息
這裏能夠編輯類庫包的信息和添加類庫、程序集的引用解釋下幾個比較重要的字段
Id:用於定位類庫包的惟一標示,如在命令行下執行 Install-Package MyPackage 這裏的MyPackage就是包包的Id值
Version:類庫的版本號,這裏建議和程序集的真實版本號保持一致,以避免發生混淆
Dependencies:此類庫依賴的程序集,根據實際狀況添加依賴類庫的Id和版本號,若無留空便可,這裏須要注意下填寫的依賴類庫須要在NuGet服務器上能找到,不然沒法完成自動引用添加
Framework assemblies:依賴的Framework 程序集,根據實際須要選擇便可,通常無需設置
除以上四項之外其餘屬性根據實際狀況修改便可,若本身用不修改也中,不過爲了使用方便仍是建議把類庫描述(Description)填寫下
5. 編輯好包包信息後接下來添加DLL到包包中
能夠選擇 右鍵-->Add Existinng File... 選擇dll添加,也能夠直接拖拽DLL到 Package contents 窗口,此例選擇拖拽方式
直接拖拽dll到窗口後,會出現提示:是否將 Winista.HtmlParser.dll放到lib 文件夾下,通常咱們選擇是
6. DLL添加完成後,快捷鍵Ctrl + K 修改包包信息Id爲Winista.HtmlParser,版本號爲1.8.0
7. 信息修改和dll都添加完畢後,選擇File --> Save(或Ctrl + S)將文件進行保存,默認文件名爲Id + 版本號.nupkg
8. 完成保存後如須要發佈到網上,選擇File--> Publish...(或Ctrl + P)
默認的發佈地址是官網,發佈 Key須要到官網去註冊一個帳號,而後就能夠獲得,這裏不在複述,若無需發佈直接關閉便可
ps:這裏沒有講述如何打包項目文件,通常狀況下咱們本身將項目文件編譯成DLL而後使用圖形化界面打包便可知足需求,若實際工做須要高度集成徹底自動化操做可自行去研究下官方文檔http://docs.nuget.org/
添加DLL默認會添加Lib文件夾,額外的菜單上還有不少.net文件夾,src等文件夾,這些文件夾只是對文件上的一個物理上的劃分而已,只是爲了幫助咱們作好文件分類,沒有其餘的用途,dll文件能夠隨便放置,不過爲了規範仍是建議按照一般習慣來放置。
建立NuGetServer Web站點
1. 新建Web站點,選擇 文件-->新建項目-->Asp.Net 空 Web應用程序
2. 選擇 工具-->Library Package Manager-->Package Manager Console 打開NuGet命令行控制檯
3. 在控制檯輸入Install-Package NuGet.Server (請保持Package source:官方源,即 Nuget offical package source,通常默認即爲官方Package源)
4. 回車確認後開始下載並安裝NuGet.Server類庫及相關引用,並自動添加引用到項目
注:具體輸出根據版本不一樣會略有不一樣
自動添加的引用
5. 在控制檯輸入 Get-Package 能夠看到剛剛安裝的類庫
6. 除添加類庫引用外,還自動添加了一些文件(關於這些文件及其做用本文不作探討,有興趣的能夠自行研究下,都很簡單)
/App_Readme/
/App_Readme/Elmah.txt
/DataServices/
/DataServices/Packages.svc
/DataServices/Routes.cs
/Packages/
/Packages/Readme.txt
/Default.aspx
/favicon.ico
/packages.config
同時Web.config也被修改,添加了一些配置項
7. 至此NuGet.Server站點已經建立完畢,恩,你沒有看錯,就是這麼簡單,接下來部署到本地或IIS站點便可使用了
1. 發佈網站到本地
2. IIS裏面創建站點www.mynuget.com,主機頭www.mynuget.com,應用程序池爲.Net4.0集成模式,目錄指向站點發布的目錄
3. 設置hosts 將www.mynuget.com執向本機
4. 設置好hosts後,從新打開瀏覽器輸入網址:http://www.mynuget.com/
5. 查看已經發布的類庫包 http://www.mynuget.com/nuget/Packages (能夠把已經打好包的類庫放到網站下的Packages文件夾下便可)
1. 選擇 工具-->Library Package Manager-->Package Manager Settings
2. 輸入名稱 MyNuGetServer及包包源地址 http://www.mynuget.com/nuget 點擊Add完成源添加
7. 查看剛剛添加的類庫源 工具-->Library Package Manager-->Manager NuGet Packages for Solution... 點擊剛添加的源MyNuGetServer能夠看到咱們放到站點下的類庫包,選中須要的包包點擊 Install完成安裝
8. 也能夠在控制檯下安裝,將類庫源執行咱們創建的源 MyNuGetServer,控制檯下輸入Install-Package Winista.HtmlParser完成安裝
如今咱們已經成功的搭建了本身的NuGet服務器。
注意點:
1. NuGet包包是放置在站點根目錄下面的Packages文件夾下,如須要改變能夠在配置文件packagesPath中進行設置,能夠設置爲相對目錄或者物理目錄
<appSettings> <!-- Change the path to the packages folder. Default is ~/Packages. This can be a virtual or physical path. --> <add key="packagesPath" value="" /> </appSettings>
2. 如何管理咱們的包包,能夠根據須要自行寫個上傳下載的文件管理功能,須要時上傳到Packages文件下,不須要了刪除便可,也能夠像我同樣寫了個FTP服務,使用ftp上傳下載
3. 最好是爲NuGet單獨創建個站點這樣管理着方便,若不方便創建獨立站點能夠隨便找個現有的web站點,在裏面安裝NuGet.Server而後發佈便可
回頭看整個過程:安裝NuGet擴展,下載網上的類庫包供本身使用,打包本身的類庫,搭建本身的NuGet服務器,整個流程基本走完了,剩下的就是咱們如何去利用好NuGet這個強大的工具了。