在上一篇建立自己的Library - 使用Nuget Package Explorer (GUI) 建立nuget package (上篇) 介紹package結構介紹了package的結構之後,在這篇我們將來用上篇所了解的結構,來建立一個簡單的package。
首先會建立一個簡單的library project,這個project會建立出等一下建立的package內容。
建立出package之後,接下來會介紹如何在本地測試這個package。
最後,當正式要把package發佈出去,讓外面的人使用,有什麼地方有提供host這些package。
在上一篇建立自己的Library - 使用Nuget Package Explorer (GUI) 建立nuget package (上篇) 介紹package結構介紹了package的結構之後,在這篇我們將來用上篇所了解的結構,來建立一個簡單的package。
首先會建立一個簡單的library project,這個project會建立出等一下建立的package內容。
建立出package之後,接下來會介紹如何在本地測試這個package。
最後,當正式要把package發佈出去,讓外面的人使用,有什麼地方有提供host這些package。
建立測試的Library Project
要建立nuget package,我們首先需要有要封裝的內容,因此第一步是建立一個建立nuget package的project。
你可以建立任何library project來跟著做,不過如果想要直接跟著後面的部分,可以直接clone github的repo,上面我准備了一個等一下會用的project:
https://github.com/alantsai-samples/Nuget-Package-Create-Sample git clone git@github.com:alantsai-samples/Nuget-Package-Create-Sample.git
Github那個專案非常簡單,提供兩個Library,一模一樣,差別在於一個用.Net 3.5 一個用.Net 4.5,為了區分,我在3.5的方法加了35在方法名稱後面。
這個library做的事情非常簡單,他提供一個方法,會把目前library的.net framework印到console。
同時這個repo裡面有一個 Want.txt
- 表示想要安裝nuget的時候一起帶過去的檔案。
用Nuget Package Explorer(NPE)建立package
建立Package的meta資訊
打開NPE的時候選擇 Create a new package
這個時候會打開一個空白的package,左邊Author的部分會先放入電腦名稱:
還記得上篇所介紹的一些欄位,我們可以把一些資訊填上,先點左上角的小icon(像一個筆和筆記本那個,快捷鍵 Ctrl + k),就會出現不同欄位的輸入框, 如果拉到下面也可以設定這個package的dependency package(不過在這個例子我們不會設定):
填完了之後,點左上角的綠色勾就可以儲存剛剛填寫的內容。然後我們就準備加入我們剛剛library所建立的dll進來。
建立Package的內容
要加入library,有兩個方式:
- 手動式:
- 對右邊的視窗點 右鍵 然後選擇
Add lib folder
- 在對建立出來的lib 點 右鍵,然後選擇
Add .Net Folder
,然後選擇正確的library .net 版本 (這個demo了一個nuget package可以有多個.net framework版本的library - 因此安裝的時候會自動選到適合的。 - 在對建立出來的.Net 版本folder點右鍵,選擇存在的檔案,然後選擇對應版本的library
- 對右邊的視窗點 右鍵 然後選擇
- 自動式:
直接把dll拖到NPE裡面,不過這個只會放到lib資料夾下面,而不會設定對應的.Net Folder
可以用同樣概念加入Want.txt
,不過如果是手動式,這次會需要建立 content
而不是library:
最後,我們的package應該會長成這個樣子:
然後可以透過menu的 File -> Save As (或ctrl+s)來存檔成為一個 nupkg的檔案,而這個就是一個nuget package
src\ReusableLibrary\ReusableLibrary.1.0.0.nupkg
在Local測試剛剛建立的nuget package
目前已經建立出一個nuget package,接下來就是要測試這個package到底是不是如我們所想的那樣。
測試package非常的簡單,我們只需要在Visual Studio的nuget package source加入一個local file system就可以,詳細步奏如下:
- VS 快速搜索(快捷鍵 ctro+q) nuget – 選擇 Package Source
- 加入一個新的package source -
Name
隨意看要取什麼,Source
就直接寫nupkg所放的位置路徑 - 開新的一個專案,然後在nuget裡面記得切換來源到你剛剛那個
Name
給的名稱的source,應該就會看到建立出來的package,並且選擇安裝。 - 可以試著建立一個.Net 3.5的專案和.Net 4.5的專案 - 注意看reference的dll,會是依照對應framework的library
結語
透過這篇,相信已經了解如何透過NPE來建立package,但是NPE來建立package有好有懷。
NPE建立package優點
- 直覺 - 在GUI操作只要把欄位填完就好。
- 好操作 - 照gui做,不用懂那麼多package的結構和原理可以做出來
NPE建立package缺點
- 無法自動化 - 因為是GUI操作,沒辦法類似用script執行完就建立出來
- 建立出來結果可能不一致 - 假設一個團隊,A和B建立出來可能不同,因為其中一個可能忘記一些步奏
因此,用NPE建立package屬於 一次性建立或者 學習用途 - 在一個長久更新的library專案用這種方式來產生package真的不適合。
在下一篇,再來介紹如何用一個project現有資訊來產生nuget package,並且這個動作可以自動化,並且任何人做出來結果都一樣。
Reference
- 何為nuget,該如何使用,和2.7版本之後建議的回覆nuget package(套件)的方式 - 介紹使用nuget
- 建立自己的Library - 使用Nuget Package Explorer (GUI) 建立nuget package (上篇) 介紹package結構 - 介紹nuget結構
- 簡報介紹