Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

建立自己的Library - 使用Nuget Package Explorer (GUI) 建立nuget package (下篇) 建立第一個package

2016-05-14 Saturday

在上一篇建立自己的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


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
2016-05-14 Saturday
comments powered by Disqus