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


    包治百病 | 如何将一个.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 elease下生成一个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

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

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

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

    发表于

    扫码关注云+社区

    领取腾讯云代金券

    我来说两句

    0 条评论
    登录 后参与评论
  • 相关阅读:
    asp.net中读取带有加号(+)的Cookie,会自动把加号替换为空格
    简单实现分行输出的javascript代码
    大学我们应该做什么
    近日个人要闻
    WPF学习笔记“路由事件”一:路由事件基础
    WPF学习笔记“路由事件”二:路由事件基础
    WPF学习笔记“命令”三:执行命令
    WPF学习笔记“命令”二:命令库
    WPF学习笔记“命令”五:自定义高级命令的使用
    WPF学习笔记“布局”一:基础
  • 原文地址:https://www.cnblogs.com/owenzh/p/11532913.html
Copyright © 2020-2023  润新知