點選上方藍字關註“汪宇傑部落格”
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
朋友會在“發現-看一看”看到你“在看”的內容