最近學了不少NuGet的東西,也看了很多它的視頻,特別是在MIX11上的視頻。
如果我們要在MIX11上評出一個明星的話,你可能會覺得是WP7,或者是SL5,那麼你肯定錯了,明星肯定是NuGet。因為幾乎每個微軟演講的人員都在用NuGet。為什麼它會這麼受大家歡迎??很簡單,它提高了大家做事情得效率,而且使用起來輕鬆,簡單。
如果你去Google下nuget說明,你會發現結果如下:
基本上沒都少文章,而且好多都是我寫的那篇文章的轉載,聲明下,我不是臭美。。。就是覺得如果大家很多人有寫它的使用,那麼我就不用費勁再去寫這些了。特別是很多人都是說明它如何在Asp.net MVC項目中的使用。其實在傳統的Asp.net項目中同樣好用。
關於NuGet的基本介紹你可以按我給的搜尋去找我寫的文章,我就不給link了。
在進行練習之前,我們先建立一個空的asp.net解決方案,(不是MVC )
1.添加第三方程式碼封裝的使用
傳統的添加dll方式,就是下載,解壓,然後找到需要添加到項目中的dll,接著添加引用,使用NuGet添加dll就比較簡單,首先你可以去Nuget.org去尋找是否有你要添加的第三方軟體包,例如我們要添加elmah:
使用Package Manager Console來添加Elmah。
除了添加dll,我們也可以添加別的檔案,例如我現在建立的是一個空的asp.net解決方案,那麼在web工程中我想把jQuery添加進來,項目模板中內建的是1.4的,我想用1.5怎麼辦呢??直接使用Install-Package Elmah就行了
現在去寫jquery的指令碼,你發現沒有智能提示,別急,可以使用 Install-Package jquery.vsdoc來安裝最新的智能提示包。。
2.如何建立本地引用
建立本地引用比較簡單了,例如,我們剛才已經添加了幾個安裝包,那麼你可以在解決方案下看到一個Packages檔案夾。本地引用我們就使用它吧。
點擊所示按鈕,進入Setting頁面,
添加一個名字為LocalFeed的當地套件源。路徑指向上面所說的那個packages檔案夾:
在Package Resource中找LocalFeed:
你可以把這個路徑指向任何一個存放nuget 包的地方。。。。。
3.建立自己公司的NuGet Server.
上面那個方式是使用本地的資源套件方式,那麼如果是一個大的公司,或者說你公司會提供一個伺服器來為你們存放內部的公用dll,傳統的大家添加這些公用的dll方式就是從SVN或者其他源碼管理工具上拿,也是需要先找到,然後去download,再添加引用進來。
如果有dll進行了更新,其他各個項目組都需要用新的dll,大家都得重複性的下載,添加引用,甚至還得刪除掉原來的dll。。。。
這時候建立本地的nuget server就顯得有必要了。
如何建立呢???????????????????
首先也是建立一個空的asp.net的項目:
說再安裝下Nuget.Server這個包,在nuget官方提供的Feed上就有它。
安裝好以後,在Packages檔案夾下放幾個nuget的包,然後訪問default.aspx:
在Packages頁面你可以看到包含的nuget包,nuget是OData形式的ATOM Feed。如:
按照第2點中介紹的把http://localhost:55326/nuget/添加到你的nuget源:
現在就可以把你們公司共用的dll打包成nuget的包,然後放到這個網站的Packages目錄下了。
上面一直介紹NuGet的feed如何自己建立,那麼公司內部如何打包nuget呢????
4.如何把代碼打包成Nuget包
首先需要去codeplex上下載nuget command line:
這玩意可是打包利器啊,教大家兩種打包方式:
a.直接通過工程檔案打包dll:
建立一個類庫,然後編譯下。把剛才下載的nuget.exe拷貝到工程檔案所在的檔案夾中:
通過命令列來建立nuget包:
搞定了:
B:使用nuget的spec檔案進行打包:
首先你得建立一個nuget的.spec檔案:
在工程中編輯剛才建立的spec檔案:
你可以編輯nuget包的資訊,比如作者,版本等等。。。
另外你也可以在打包時建立兩個檔案夾,一個是content,一個是tools檔案夾。
5.NuGet的進階應用程式(Scaffold的擴充)
這個部分會是結合powershell和t4模板來一起通過一個類來自動建立增刪改查的例子。我準備把原始碼放到codeplex上。
代碼和介紹說明我下周在公司和大家分享nuget後,再把文章和代碼已經ppt補上。。。。。。
如果你對NuGet感興趣,可以關注下我,到時候可以隨時看到文章更新。