2016年5月14日 星期六

建立自己的Library - 使用Nuget Package Explorer (GUI) 建立nuget package (下篇) 建立第一個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。

image
專案結構

同時這個repo裡面有一個 Want.txt - 表示想要安裝nuget的時候一起帶過去的檔案。

用Nuget Package Explorer(NPE)建立package

建立Package的meta資訊

打開NPE的時候選擇 Create a new package

image

這個時候會打開一個空白的package,左邊Author的部分會先放入電腦名稱:

image

還記得上篇所介紹的一些欄位,我們可以把一些資訊填上,先點左上角的小icon(像一個筆和筆記本那個,快捷鍵 Ctrl + k),就會出現不同欄位的輸入框, 如果拉到下面也可以設定這個package的dependency package(不過在這個例子我們不會設定):

image

填完了之後,點左上角的綠色勾就可以儲存剛剛填寫的內容。然後我們就準備加入我們剛剛library所建立的dll進來。

建立Package的內容

要加入library,有兩個方式:

  • 手動式:
    • 對右邊的視窗點 右鍵 然後選擇 Add lib folder
      image
    • 在對建立出來的lib 點 右鍵,然後選擇 Add .Net Folder,然後選擇正確的library .net 版本 (這個demo了一個nuget package可以有多個.net framework版本的library - 因此安裝的時候會自動選到適合的。
      image
    • 在對建立出來的.Net 版本folder點右鍵,選擇存在的檔案,然後選擇對應版本的library
      image
  • 自動式:

    直接把dll拖到NPE裡面,不過這個只會放到lib資料夾下面,而不會設定對應的.Net Folder

    image
    還是要自己手動放到正確的.Net版本

可以用同樣概念加入Want.txt,不過如果是手動式,這次會需要建立 content而不是library:

最後,我們的package應該會長成這個樣子:

image
然後可以透過menu的 File -> Save As (或ctrl+s)來存檔成為一個 nupkg的檔案,而這個就是一個nuget package
這個nuget package也有在repo裡面,在路徑 src\ReusableLibrary\ReusableLibrary.1.0.0.nupkg

在Local測試剛剛建立的nuget package

目前已經建立出一個nuget package,接下來就是要測試這個package到底是不是如我們所想的那樣。

測試package非常的簡單,我們只需要在Visual Studio的nuget package source加入一個local file system就可以,詳細步奏如下:

  1. VS 快速搜索(快捷鍵 ctro+q) nuget – 選擇 Package Source
    image
  2. 加入一個新的package source - Name 隨意看要取什麼,Source就直接寫nupkg所放的位置路徑
    image
  3. 開新的一個專案,然後在nuget裡面記得切換來源到你剛剛那個 Name給的名稱的source,應該就會看到建立出來的package,並且選擇安裝。
  4. 可以試著建立一個.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


沒有留言 :

張貼留言