前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >包治百病 | 如何将一个.NET Core类库发布到NuGet

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

作者头像
Edi Wang
发布2019-07-09 10:11:25
9240
发布2019-07-09 10:11:25
举报
文章被收录于专栏:汪宇杰博客汪宇杰博客

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 汪宇杰博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档