封裝 DLL 成 NuGet Package 並發佈到 NuGet Gallery 紀錄 l

用了很久的 Visual Studio 開發 C# 程式,也時常裝很多 Nuget Package 來讓專案使用,但從來也都沒有認真考慮過要自己包 NuGet Package 並發佈到 NuGet Gallery,讓全世界的開發者都能直接在 C# 專案當中直接下載使用...

官網: https://www.nuget.org



近日在因緣巧合下,終於驅動了自己研究要如何把 DLL 包成 NuGet Package 並且發布到 NuGet Gallery 來下載使用,不然會造成後續很多麻煩...XD

不過,說是因緣巧合要封裝 DLL 變成 NuGet Package 發佈,才不會造成後續的困擾。但其實也沒太多時間能細細研究,所以就簡單的上網爬了一些資料:

如果有要認真了解的話還是得好好地把 NuGet 放在 GitHub 上的 NuGet Home 文件給讀一讀並且演練過,才能正式的熟練 NuGet 的 Package 相關操作與控制。

就一個 NuGet Package 的徒手封裝第一次接觸而言,以下是就爬文後就直接動手做的相關紀錄。



首先,從黑暗大大的文章得知可以利用 GUI 軟體工具 NuGet Package Explorer 來封裝 DLL 成為 Nuget Package,而 NuGet Package Explorer 的 GitHub 文件也建議如果使用的平台是 Windows 10 就直接從 Microsoft Store 下載該軟體:



以下就為 Windows 10 的 Microsoft Store 下載安裝的過程:



安裝 NuGet Package Explorer 完畢後啟動起來的第一個畫面。



在 "Common tasks" 的選單上直接選擇 "Create a new package (Ctrl + N)"。



接著會出現如下畫面,左邊的窗格為 "Package metadata" 右邊窗格為 "Package contents"。

首先,先來調整 Package metadata 當中的資料。



可透過選單列的 "Edit" -> "Edit Metadata" 來進入編輯模式,如果想直接編輯 XML 標記也可以直接選擇 "Edit Metadata Source"。



最主要的 Id、Version、Authors 這三個欄位一定要填寫,而 Id 不可跟 NuGet Gallery 上既有的 NuGet Package 衝突,Version 不可小於等於既有存在的版本,Authors 就看想要用什麼名字發表此 Nuget Package。

後面的版權宣告、摘要、描述與後面的其他項目,就看每個人的善心程度了。完成後,點選 "V" 完成編輯。



編輯後會得到如下類似畫面。



完成後在 Package contents 的窗格中,點選滑鼠右鍵選單中的 "Add Lib Folder"。



即會在 "Package contents" 當中出現 "lib" 的圖示,其他的選項可根據實際需要來加入。在本文的操作的需求是要加入 "DLL" 並且該 "DLL" 需要使用 .NET Standard 2.0 的 Library。



所以繼續在 "lib" 滑鼠右鍵選單中選擇 "Add .NET Platform Standard folder" -> ".NET Standard 2.0"。



接著就會出現如下畫面的結果。



再繼續在剛剛加入的 .NET Standard 2.0 的圖示上,滑鼠右鍵選單選擇 "Add Existing File...",把所要封裝的 "DLL" 加入進來。



如下畫面。



接著就針對這個 NuGet Package 儲存,透過選單列中的 "File" -> "Save"。



選擇電腦的一個風水寶地路徑位置,儲存該 NuGet Package 的 nupkg 檔案。



儲存好就如下結果。

接下來就是到 NuGet 的官網上註冊帳號,並且在帳號中產生發佈金鑰,才能發佈所封裝好的 NuGet Package 唷!

Part 2 文章👈👈👈


 


I'm a Microsoft MVP - Developer Technologies (From 2015 ~).
 

MVP_Logo



I focus on the following topics: Xamarin Technology, Azure, Mobile DevOps, and Microsoft EM+S.

If you want to know more about them, welcome to my website:
https://jamestsai.tw 


本部落格文章之圖片相關後製處理皆透過 Techsmith 公司 所贊助其授權使用之 "Snagit" 與 "Snagit Editor" 軟體製作。