如何将一个.NET Core类库发布到NuGet

包治百病 | 如何将一个.NET Core类库发布到NuGet

写文章

包治百病 | 如何将一个.NET Core类库发布到NuGet

Edi Wang发表于汪宇杰博客77

NuGet是.NET世界的包管理器,有官方的nuget.org,也允许构建公司和私人的服务器。在.NET Core的时代,封装一个NuGet包比以往更容易,我们来看看吧!

NuGet账号

如果你想和微软一起予力众生,让全世界的.NET程序员都能用上你的包,远离996,那么你就需要有个nuget.org的账号,用来上传自己的包。

nuget.org可以用微软账号直接登录,免去注册的麻烦。

如何将一个.NET Core类库发布到NuGet

登录以后,建议大家先去搞一套API Key,并记在OneNote里,虽然本文讨论的范围内不需要使用这套Key,但如果以后你希望通过NuGet CLI或自动化工具(如Azure DevOps)发布NuGet包的话,就用得上它

如何将一个.NET Core类库发布到NuGet

使用 VS2019 创建NuGet包

以我的一个类库Edi.Blog.Pingback为例,开发完成以后,在项目文件上点右键,打开属性对话框。

如何将一个.NET Core类库发布到NuGet

Package选项卡中,勾选 Generate NuGet package on build

如何将一个.NET Core类库发布到NuGet

并且填写一些必要信息。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之后,会报一个警告。

如何将一个.NET Core类库发布到NuGet

其实在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,不在本文讨论范围内。

如何将一个.NET Core类库发布到NuGet
如何将一个.NET Core类库发布到NuGet
如何将一个.NET Core类库发布到NuGet

上传到 nuget.org

最简单的方式,是通过网页上传。在nuget.org的用户菜单下面,选择Upload Package

如何将一个.NET Core类库发布到NuGet

据说我们.NET程序员都是拖控件的,所以我们只能把刚才编译出来的nupkg文件拖到网页中,完成上传。

如何将一个.NET Core类库发布到NuGet

在确认信息无误后,点击页面最下方的 Submit 按钮提交审核。

如何将一个.NET Core类库发布到NuGet

接下来,你会看到审核的状态。最初是 Validating,审核通过后会变成 Listed。一般5分钟就可以。

如何将一个.NET Core类库发布到NuGet

但是在Listed之后,还是会有一个警告,意思是服务器的索引还没建完,用户搜不到该版本的包。如果心急,可以等到显示Listed后,通过NuGet CLI或者编辑project文件,指定具体版本号去安装。

如何将一个.NET Core类库发布到NuGet

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

如何将一个.NET Core类库发布到NuGet

相关工具推荐

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

NuGet Package Explorer,Windows下的可视化NuGet包编辑器,可以解剖、编辑、上传NuGet包:https://www.microsoft.com/store/productId/9WZDNCRDMDM3

如何将一个.NET Core类库发布到NuGet

原文发布于微信公众号 - 汪宇杰博客(ediwangblog)

原文发表时间:2019-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于 举报30分享 如何将一个.NET Core类库发布到NuGet

扫码关注云+社区

领取腾讯云代金券

汪宇杰博客

84 篇文章13 人订阅

我来说两句

0 条评论
登录 后参与评论
上一篇:c# – 使用NuGet.targets创建Nuget包


下一篇:c# – NuGet包拒绝在.NET Core库中卸载