長久以來微軟的開發平台一直都沒有像其他開發平台常見的套件管理工具,像是 PHP 就有 PEAR 可用、Perl 也有 PPM (Perl package manager),甚至 Python 也有 PyPM (Python Package Manager) 等等。大約在去年八月左右微軟內部開始進行了一個套件管理員的開發計畫名為 NuGet,此工具主要跟 Visual Studio 2010 結合使用,可讓你在使用 Visual Studio 2010 開發專案的過程中隨時安裝、更新套件,像是 jQuery, ELMAH, log4net, … 等等目前共有上千個套件可供選擇,NuGet 的出現可說是所有開發人員的福音,絕對是個必學的工具之一!
在 CodePlex 上的 NuGet 專案網站包含了三個工具可下載:
- NuGet Visual Studio extension
完美整合進 Visual Studio 2010 之中,可在專案中快速的安裝套件 - NuGet Package Explorer
可用來瀏覽線上的 NuGet 所有套件,也可當成用來製作 NuGet 套件的工具 - NuGet.exe Command Line
NuGet 套件管理的指令列工具,方便對各套件進行自動化操作 (例如下載線上的套件原始檔、或將自行撰寫的套件發佈到 NuGet Gallery 等等)
備註:以上工具的下載網址:http://nuget.codeplex.com/releases
1. NuGet Visual Studio extension
安裝 NuGet Visual Studio extension 也跟以往安裝其他擴充套件一樣,可以透過 Visual Studio 2010 的擴充管理員進行安裝,開啟後點選 線上圖庫 分類,然後在右上角的搜尋文字框輸入 NuGet 就可以查到 NuGet Package Manager 項目。
注意:安裝 NuGet Package Manager 必須先安裝 PowerShell 2.0,如果你的作業系統已經是 Windows 7 或 Windows Server 2008 R2 的話則不需要額外安裝 (因為已經內建)。
接著我們以一個 BlogEngine.NET 專案來解說 NuGet Package Manager 的使用方式,過程中我們會透過 NuGet Package Manager 安裝 jQuery 1.6.1 到專案中。
在開啟方案或專案後,我們可以在方案總管的任何一個專案節點點選右鍵後選取 Add Library Package Reference 開啟套件選取視窗:
接著我們在視窗右上角輸入 jQuery 進行搜尋,然後找到 jQuery 1.6.1 之後點選 Install 進行安裝:
安裝完成後不需要重開 Visual Studio 2010,該套件會自動安裝進你現有的專案之中,如下圖示:
若要移除已安裝的套件,透過相同的步驟開啟 Add Library Package Reference 視窗,並點選 Installed packages 頁籤後,將已安裝的項目點選 Uninstall 按鈕即可移除先前安裝好的套件:
以上就是透過 NuGet Package Manager 安裝套件的標準方式,到目前為止在 NuGet Gallery 上有 1523 個套件可供下載且每天都會增加好幾個套件,可預見未來 NuGet 應該會非常普遍,許多開放原始碼的工具與套件也都會慢慢發佈到這裡來。
安裝了套件以後,如果之後套件有更新版本 Visual Studio 2010 就會主動詢問你要不要升級套件,例如日後推出了 jQuery 1.6.2 版,Visual Studio 2010 就會通知你要不要更新套件,而更新的過程就跟使用 Visual Studio 2010 擴充管理員一模一樣,非常方便。
除了透過視窗介面之外,我們還可以透過 Package Manager Console 來管理專案中使用的套件,開啟方式如下圖示:
開啟之後的視窗其實是 PowerShell 的執行視窗,輸入的是 PowerShell 的 Cmdlets,例如安裝 jQuery 套件的指令就是 Install-Package jQuery
解除安裝 jQuery 套件的指令就是 Uninstall-Package jQuery
另外有各一定要使用 Package Manager Console 的情況,就是當你想安裝舊版套件時,就必須使用 Package Manager Console 才能指定版本進行安裝,例如目前最新版的 jQuery 套件為 1.6.1,但你的專案希望能安裝 jQuery 1.5.1 這個版本時,那麼你就可以輸入以下指令:
Install-Package jQuery -Version 1.5.1
Install-Package jQuery -Version 1.5.1
若要更新現有已安裝的套件,可以先以 Get-Package -Updates 取得所有相關的更新套件名稱與版本,然後再執行 Update-Packages <套件名稱> 即可自動更新,如下圖示:
完整的使用方式可以參考 NuGet Docs 網站的 Finding and Installing a NuGet Package Using the Package Manager Console 文件說明。
2. NuGet Package Explorer
預設所有的 NuGet 套件都來自於 NuGet Gallery 且所有的套件都是開放原始碼的,如果你想要瞭解特定幾個套件是如何製作的、內容包含哪些等等,透過 NuGet Package Explorer 將套件下載即可進一步查看完整的內容,以下是安裝與使用方式。
在 http://nuget.codeplex.com/releases 下載 NuGet Package Explorer 時可以透過 ClickOnce Installer 進行安裝,透過 ClickOnce 安裝軟體有個好處就是只要有更新版出現程式會立即更新,省去手動安裝更新的麻煩。
安裝好之後就會在桌面出現 NuGet Package Explorer 圖示,滑鼠雙擊之後就會開啟程式:
不管學習什麼技術,一般人通常都是從模仿開始學起的,所以我們就先利用 NuGet Package Explorer 下載目前 NuGet Gallery 上現有的套件回來研究再說。開啟 [File] / [Open from Feed…]
透過關鍵字搜尋後找出我們要下載的套件 ( Id ) 與特定版本 ( Version ),如下圖你可以看見搜尋 jQuery 關鍵字之後有 135 個相關套件可下載,而且在搜尋結果中有許多 Id 完全一樣的套件,像是 Id 為 jQuery 的套件就有許多不同的版本,我們挑選 jQuery 的最新版 1.6.1 來分析其內容:
在開啟套件之後,你會看見許多套件的摘要資訊 (Package metadata),以及套件的內容 (Package contents),在點選檔案之後還能看見特定檔案的內容 (僅限特定格式的文字內容):
除了能瀏覽別人製作的套件外,你甚至還可以修改別人的套件,客製化成公司需要的格式與檔案內容,然後再將套件發佈到公司內部的網站,如此一來也能提供公司的開發人員安裝公司客製化過後的 NuGet 套件進行安裝、使用、更新。
建立套件的過程都可以從 NuGet Docs 網站的 Creating Packages 單元查到詳細的教學文件。
3. NuGet.exe Command Line
NuGet.exe 是一個命令提示字元下的套件管理工具,其用途跟 NuGet Package Explorer 一模一樣,差別僅在於這是透過命令提示字元下的操作方式,方便你整合 Visual Studio 2010 的 MSBuild 進行套件的封裝、安裝、更新、移除或自動發佈套件至 NuGet Gallery 等等,詳細的使用方式可參考 Command Line Reference 文件說明。
由於 NuGet.exe 是獨立執行檔,不像 NuGet Package Explorer 時可以透過 ClickOnce 技術自動更新版本,因此 NuGet.exe 提供了一個 update 指令,只要執行 NuGet.exe update 就可以自動更新該程式,而在更新完之後原本的 NuGet.exe 程式會備份成另一個 NuGet.exe.old 檔案,若更新過程出了問題你還能還原回舊版,如下圖示:
由於 NuGet Gallery 上的套件非常多,使用者不容易一眼看完,我剛剛花了好幾個小時將這一千多個套件全部 Review 過一次,篩選出一些我認為日後的開發工作上可能會用到的套件,但後來我發現我太貪心,撈出了一大堆套件,從原本的精選就變成了海選了,各位就加減看啦!^_^
- .NET
- NLog
- SharpZipLib
- DotNetZip
- Json.NET
- Html Agility Pack
- AutoMapper
- CsvHelper
- Craig's Utility Library by James Craig
- CommonLibrary.NET
- .NET Extensions Methods Library for C# and VB.NET (ASP.NET, MVC, SL, WPF, EF)
- LinqKit
- DynamicLINQ
- SharpSerializer
- ObjectDumper
- HttpClient
- .NET Transactional File Manager
- EmitMapper
- Stateless
- a hierarchical state machine framework based on Simple State Machine for Boo
- Entity Framework
- EntityFramework
- EntityFramework.Sample
- EF4Templates
- EFCodeFirst
- EFCodeFirst.SqlServerCompact
- EFCodeFirst.Sample
- Entity Framework Tracing Provider
- SQLite
- ASP.NET
- ELMAH
- ELMAH Quick Start
- AntiXSS
- reCAPTCHA plugin for .NET
- FormsAuthenticationExtensions
- T4 AppSettings
- T4Configuration
- WebApi.All
- WCF Data Services Toolkit
- The Facebook C# SDK core.
- FacebookWeb
- The Facebook C# SDK web component.
- HTML5 Setup
- 將 HTML5 的特定檔案 MIME 類型加入 web.config
- ASP.NET MVC
- Elmah.Contrib.Mvc
- DataAnnotationsExtensions.MVC3
- TelerikMvcExtensions
- PagedList
- PagedList.Mvc
- RouteMagic
- RouteMagic.Mvc
- MvcPager2
- MvcPager3
- MvcSiteMapProvider ( ASP.NET MVC 2 )
- MvcSiteMapProvider-MVC3 ( ASP.NET MVC 3 )
- PGK.Extensions.MVC
- Autofac ASP.NET MVC3 Integration
- Autofac ASP.NET MVC2 Integration
- Mvc3Futures
- NotFound MVC
- T4MVC
- MvcScaffolding
- Mvc3CodeTemplatesCSharp
- MVC HTML5 Toolkit
- FacebookWebMvc
- The Facebook C# SDK MVC component.
- ASP.NET Web Helpers Library
- 僅適用於 ASP.NET MVC 3 與 ASP.NET Web Pages
- Script# for ASP.NET MVC Applications
- ShouldAnnotate
- RazorScriptManager
- ASP.NET Web Pages ( WebMatrix )
- ASP.NET Web Helpers Library
- Loop Helper for WebMatrix
- QuickEdit.Helper
- QRCode Helper
- IE9.Helper
- UrlShortener.Helper
- Routing for WebPages
- 各式 ASP.NET Web Pages 套件
- JavaScript
- jQuery
- jQuery UI Team 製作的所有 NuGet Packages
- jQuery Visual Studio 2010 IntelliSense
- jQuery Cookie plugin
- Modernizr
- CKEditor
- CLEditor
- YUICompressor .NET
- JSON-js json2
- datajs
- CSS
- Unit Testing
- IoC
- NuGet
- Tools ( 透過 NuGet 安裝以下工具時必須先安裝 Chocolatey 然後利用 cinst 指令進行安裝 )
相關連結
- NuGet Package Manager (Visual Studio Gallery)
- NuGet Screencasts
- NuGet Gallery
- NuGet Docs
- Using the Add Library Package Reference Dialog Box
- Finding and Installing a NuGet Package Using the Package Manager Console
- NuGet In Depth: Empowering Open Source on the .NET Platform (MIX11) [ 一定要看! ]
- you've been HAACKED – nuget
- David Ebbo: NuGet
- 還在揮汗徒手安裝程式庫? 試試NuGet吧
- 自製NuGet程式包
- The easy way to publish NuGet packages with sources
- NuGet 1.1 Released
- NuGet 1.2 Released
- NuGet 1.3 Released
影片教學
沒有留言:
張貼留言