歡迎光臨
每天分享高質量文章

包治百病 | 如何將一個.NET Core類庫釋出到NuGet

點選上方藍字關註“汪宇傑部落格”

NuGet是.NET世界的包管理器,有官方的nuget.org,也允許構建公司和私人的伺服器。在.NET Core的時代,封裝一個NuGet包比以往更容易,我們來看看吧!

NuGet賬號

如果你想和微軟一起予力眾生,讓全世界的.NET程式員都能用上你的包,遠離996,那麼你就需要有個nuget.org的賬號,用來上傳自己的包。

nuget.org可以用微軟賬號直接登入,免去註冊的麻煩。

登入以後,建議大家先去搞一套API Key,並記在OneNote裡,雖然本文討論的範圍內不需要使用這套Key,但如果以後你希望透過NuGet CLI或自動化工具(如Azure DevOps)釋出NuGet包的話,就用得上它

使用 VS2019 建立NuGet包

以我的一個類庫Edi.Blog.Pingback為例,開發完成以後,在專案檔案上點右鍵,開啟屬性對話方塊。

Package選項卡中,勾選 Generate NuGet package on build

並且填寫一些必要資訊。Package id 是最重要的,即終端使用者安裝你的NuGet包時,使用的ID。這和Product是不一樣的。最經典的例子就是Json.NET,它的Package id是Newtonsoft.Json,而不是Json.NET。一般為了避免混淆的情況,我建議大家保持Package id和Product名稱一致。

其次是版本號,Package version是最終會顯示在nuget.org網頁上的版本,也是透過NuGet CLI指定安裝版本時候所用的版本。為了避免混淆,也建議與Assembly/File version保持一致。

其他資訊可以根據需要填寫,越詳細越好。比如我的這個包,是在NuGet用MIT協議開源的,我就可以填寫倉庫地址(Repository URL),以及協議。就算不是開源的包,也建議大家填寫協議。不然最終上傳nuget.org之後,會報一個警告。

其實在VS介面上進行的這些操作,最終是反映到工程檔案裡的(Edi.Blog.Pingback.csproj),也就是說,如果你是個VSCode黨,也可以透過手工編輯工程檔案的方式來完成這一系列的設定。

  netcoreapp2.2

  true

  Edi Wang

  edi.wang

  Pingback sender and receiver used in my blog system.

  https://github.com/EdiWang/Edi.Blog.Pingback

  https://edi.wang

  10.1.0.0

  10.1.0.0

  10.1.0

  Blog, Pingback

  MIT

接下來,切換到Release樣式編譯一把,就可以在bin\release下生成一個nupkg格式的包了!使用Release是因為面對的是生產環境,希望終端使用者使用編譯器最佳化過的dll。

// 其實,一個NuGet包可以同時包含Release和Debug兩個版本的dll,不在本文討論範圍內。

上傳到 nuget.org

最簡單的方式,是透過網頁上傳。在nuget.org的使用者選單下麵,選擇Upload Package

據說我們.NET程式員都是拖控制元件的,所以我們只能把剛才編譯出來的nupkg檔案拖到網頁中,完成上傳。

在確認資訊無誤後,點選頁面最下方的 Submit 按鈕提交審核。

接下來,你會看到審核的狀態。最初是 Validating,審核透過後會變成 Listed。一般5分鐘就可以。

但是在Listed之後,還是會有一個警告,意思是伺服器的索引還沒建完,使用者搜不到該版本的包。如果心急,可以等到顯示Listed後,透過NuGet CLI或者編輯project檔案,指定具體版本號去安裝。

等警告消失後,你的包就完完整整的ready了!趕緊向全世界分享你的成果吧~

相關工具推薦

NuGet命令列工具:https://www.nuget.org/downloads

NuGet Package Explorer,Windows下的視覺化NuGet包編輯器,可以解剖、編輯、上傳NuGet包:https://www.microsoft.com/store/productId/9WZDNCRDMDM3

 

    已同步到看一看
    贊(0)

    分享創造快樂