包治百病 | 如何将一个.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黨,也可以通過手工編輯工程文件的方式來完成這一系列的設置。
<PropertyGroup>
? <TargetFramework>netcoreapp2.2</TargetFramework>
? <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
? <Authors>Edi Wang</Authors>
? <Company>edi.wang</Company>
? <Description>Pingback sender and receiver used in my blog system.</Description>
? <RepositoryUrl>https://github.com/EdiWang/Edi.Blog.Pingback</RepositoryUrl>
? <PackageProjectUrl>https://edi.wang</PackageProjectUrl>
? <AssemblyVersion>10.1.0.0</AssemblyVersion>
? <FileVersion>10.1.0.0</FileVersion>
? <Version>10.1.0</Version>
? <PackageTags>Blog, Pingback</PackageTags>
? <PackageLicenseExpression>MIT</PackageLicenseExpression>
</PropertyGroup>
接下來,切換到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
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的包治百病 | 如何将一个.NET Core类库发布到NuGet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# - 为引用类型重定义相等性 - 继
- 下一篇: 如何在ASP.NET Core中使用Az