Nuget 這個工具最早是在MIX11上開始讓我注意.不知道當時看MIX同窗是否注意到一個小細節.-就是全部MIX11 Code演示環節中MS開發人員都使用Nuget.本篇介紹一些Nuget安裝和一些在實際項目中基本用法.shell
首先 解釋一下Nuget Tool是什麼?安全
NuGet 是一種 Visual Studio 擴展工具,它可以簡化在 Visual Studio 項目中添加、更新和刪除庫(部署爲程序包)的操做。 NuGet 程序包是打包成一個文件的文件集,擴展名是 . nupkg,使用開放打包約定 (OPC) 格式.ide
在沒有使用Nuget工具以前.若是咱們要在一個普通.NET項目中添加一個庫的引用.最簡單的方式就是添加DLL引用的方式實現第三方代碼庫引用.經過下載解壓.添加引用操做.若是在發佈時還須要爲項目依賴項進行大量手工整理.是否發現.在DLL引入到發佈整個過程存在一個管理」真空「狀態.若是要向其餘開發者或組織共享咱們代碼.是否意味更復雜的操做.着偏偏也是Nuget所作的.工具
安裝Nuget有兩種方式.方式一打開Visual Studio 2010,打開Tool->Extension Manager窗體.選擇Online Gallery,在搜索框中輸入NuGet看到:命令行
點擊Download下載會自動安裝,另一種方式打開http://www.nuget.org/直接下載安裝文件NuGet Manager . 點擊運行開始安裝:3d
選擇安裝工具 下一步:對象
安裝完成.若是在安裝過程出現錯誤貨沒有正確安裝會在安裝界面提示:blog
關於安裝出錯後經過查看Install Log 肯定出錯的緣由:資源
若是以爲麻煩.也能夠不看.直接找到上圖的目錄刪除掉NuGet Package Manager文件夾,從新安裝Nuget Tool便可.安裝完成後能夠建立一個Windows phone Application 打開Tool->Library Package Manager->Package Manager Console:開發
能夠經過在控制檯Package Manager Console 輸出目錄管理庫 首先在在線的http://www.nuget.org/packages目錄下找到對應庫初始化路徑 相似找到Json.NET http://www.nuget.org/packages/Newtonsoft.Json 初始化路徑爲:
輸入:Install-Package Newtonsoft.Json
若是對應庫文件較大.則會在Visual Studio 右下角提示有下載進度.安裝完成後:
能夠在當前項目目錄中看到已經成功添加到引用中:
能夠引用管理手動添加庫文件.在解決方案的References引用能夠看到:
多了一個Manage Nuget Packages打開管理窗體可以實現已經安裝庫文件管理:
Nuget提供基於 Windows PowerShell 的控制檯窗口(稱做程序包管理器控制檯)以及一組 Windows PowerShell 命令與 NuGet 進行交互。 Windows PowerShell 是基於 .NET 的腳本語言和命令行 shell,很是適合組成命令集,並可以處理對象.固然PowerShell提供強大支持能夠Package Manager Console經過指令直接管理卸載庫 例如卸載已經引用Json.NET庫輸入:Unstall-Package Newtonsoft.Json卸載.若是想看到當前項目已經引用的Package在Console 直接經過指令的方式獲取 Get-Package:
看到當前項目中已經使用庫文件 以及版本其餘信息.若是已經引用的組件存在新的版本 依然能夠經過Update-Package批量更新已經引用的庫:
命令嘗試將每一個程序包都更新到最新版本,若是任何程序包包含重大改變,這會是一項很是重大的操做。 在多數狀況下,您僅但願將各程序包更新至最新的修補程序版本。 這叫「安全」更新,前提是具備較大內部版本號或修訂號(但具備相同的主版本號和次版本號)的程序包可以向後兼容。 僅添加 Safe 標記以執行安全更新:例:Update-Package –Safe
固然咱們可以如今操做都是基於在線Nuget官方數據源Package操做.固然咱們能夠PAckage數據源設置成本地 找到綠色按鈕Package Manager Settings:
打開並在一個指定本地目錄下添加一個本地Package數據源:
能在Console看到指定的數據源設置分類LocalPackages:
固然對於組織結構更大的公司和開發團隊.若是簡單的使用SVN和Git管理方式依然不容易控制不一樣庫版本和對外共享的控制.Nuget針對企業用戶提供能夠在企業內部搭建一個Nuget Server的形式來統一管理內部開發團隊庫共享. 大大提升開發效率.
參考資源: