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.
NuGet 是一個Visual Studio的擴充。在使用Visual Studio開發基於.NET Framework的應用時,NuGet能夠令你在項目中添加、移除和更新引用的工作變得更加快捷方便。
這就是說: 我們往往在開發項目裡,會使用一些第三方的dll, 如:Newtonsoft.Json.dll (它為我們提供了進行序列化和還原序列化解決方案, 很有用,也很穩定,還很有名氣)。
但是,我們往往也面臨隨著項目升級,對這些引入的第三方外掛程式進行升級的可能和必要。
比方說,原本的項目是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。
你就需要到官網或者通過Google 去尋找它的最新版本,下載,解壓,然後替代等操作。 似乎看上去,也沒多少複雜的事情, 也習以為常了。誰叫咱引用別人的東西,只能跟著走了,習慣了這樣的更新,總比自己寫更快吧。
現在,NuGet 將這個過程系統化,令你可以更加方便的尋找你要的第三方的dll, 同時,還可以為你提供自動或者手動更新,而無需你在人肉搜尋與更新了。
2. 官方網站:www.nuget.org
CodePlex: http://nuget.codeplex.com/
3. 安裝:
開啟Visual Studio 2010, Tools-> Extensions Manager... (工具->擴充管理器), 開啟 vs擴充管理庫,選擇 Online Gallery (聯機庫), 既可以在右上方搜尋 “NuGet”。
選擇“NuGet Packge Manager”, 點擊右上方的 Install,既可以完成安裝,安裝完成後,即為 綠色的對號。
4 . 舉例:
建立一個項目,這裡我們就簡單建立一個Web Application:
我打算在這個項目中,添加Newtonsoft.Json.dll。
我不再通過傳統方式,下載解壓並copy到項目中再引用。而是通過NuGet提供的方式實現:
NuGet提供了兩種方式添加(至少我值知道是兩種方式):
第一種 通過 "Add Library Package Reference..." 添加,如所示:
點擊 ‘Add Library Package Reference...’ , 搜尋你要添加的Package的名稱:
點擊 "Install" 按鈕, 安裝這個Package。 這是你將發現NuGet為你當前的項目自動引入了最新的 Newtonsoft.Json.dll 動態連結程式庫。
這時,你就可以使用它了。
第二種 使用Package Manager Console為項目添加該引用:
從VS2010的主菜單->Tools->Library Package Manager->Package Manager Console,開啟Package Manager控制台:
假設我們知道 Newtonsoft.Json 在NuGet上的名稱, 我們可以使用下面命令安裝引用:
Install-Package Newtonsoft.Json
斷行符號後,NuGet將自動為你下載並添加引用。 同時,控制台為你提示如下資訊:
PM> Install-Package Newtonsoft.Json
Successfully installed 'Newtonsoft.Json 4.0.8'.
Successfully added 'Newtonsoft.Json 4.0.8' to WebApplication2.
你還可以通過這兩種 方式更新引用為最新版本。
5. 建立自己的 NuGet Server。
如果你是一個大公司的程式設計人員,你設計瞭解決某一問題的 解決方案即一個良好的會被同事頻繁使用的動態連結程式庫中NuGet.Demo.dll,你將它放置在公司共用的某個磁碟檔案夾下,並email通知大家最新的更新等。
這個dll一直有你維護和更新,以往大家也就會得到你的email通知, 根據自己的需求,到上文說的檔案夾下copy並刪除當前舊的dll.
如今我們可以通過NuGet Server提供的手段,幫我們更加自動和人性化的簡化並更加方便這一工作情境:
那麼,如何建立這個自己公司的NuGet Server。
我們新建立一個 工程:Infoshare.Projects.
然後通過上面的方法,開啟Package Manager Console, 並輸入如下命令並斷行符號:
......
PM> Install-Package NuGet.Server
......
這時,你會發現工程的Refernces 下添加了一個NuGet.Core的引用,它將為我們實現這一方案。
同時,添加了兩個檔案夾: “DataServices” ;“Packages” 和若干檔案 以及一個WebForm "Default.aspx",如所示:
運行,並查看Default.aspx頁面:
點擊here,進入Packages頁面, 你應該可以看到Package下包含的nuget包:
但是,如上面顯示並沒有任何Feed 記錄。這是因為在剛才的Infoshare.Projects的Packages檔案夾下,並沒有任何nuget包。
我們將上面通過NuGet的Packages Manager Cnsole添加的 NuGet 包,放到當前這個Infoshare.Projects的Packages檔案夾下,
添加完成後如:
在運行查看:
我們在項目中建立一個Class Library 命名為:Infoshare.Core, 將作為公司普用的關鍵dll,通過NuGet Server進行管理。
現在的問題是如何才能產生類似Newtonsoft.Json可供NuGet.Server使用的nuget包,即將自己的公司的dll打包成nuget包?
這要用到NuGet提供的工具,你需要到 http://nuget.codeplex.com/上面下載:
下載nuget.exe 後,你可以使用下面的方式進行打包:
使用nuget.exe pack將工程檔案打包, (命令:"nuget pack"):
將下載的NuGet.exe放到Infoshare.Core的工程檔案夾下:
執行如下命令:
將產生的 Infoshare.Core.1.0.0.0.nupkg 檔案和相應的Infoshare.Core.dll 拷貝到 Infoshare.Projects下的Packages檔案夾下:
在運行查看defalut.aspx:
那麼如何像NuGet Server那樣,可以通過“Add Library Package Reference...”,彈出Library Reference 搜尋和安裝對話方塊?
這就要向 NuGet 添加更多程式包源, 即添加你的NuGet Server程式包源。
通過“Tools”(工具)|“Library Package Manager”(庫封裝管理員)|“Package Manager Settings”(封裝管理員設定)菜單選項,單擊“Package Sources”(程式包源)節點,
今天突然看到網上又一遍更加系統和全面的講解閱讀: 使用NuGet 管理項目庫
代碼下載:
Jack
2012-3-16 北京