长话短说, 今天分享如何在nuget.org创建并发布.NET Standard package。

前置

  1. 安装勾选.NET Core开发套件的Visual Studio; 安装dotnet Cli

从VS2017开始,dotnet Cli已经自动在.NET开发套件中被安装;

使用SDK-style format(SDK属性)的.NET Standard项目需要dotnet Cli;nuget.exe Cli用于非SDK样式的项目(通常是.NET Framework)。

  1. 创建.NET Standard库项目

配置package属性

  1. 项目右键,选择属性--->打包

    打包面板只会出现在VSSDK-style项目,典型如.NET Standard或者.NET Core库项目。

构建时生成Nuget包:顾名思义,除打包命令,构建时也会自动生成nuget包;

标记:帮助其他人定位你的包,了解包的能力。

  1. 给package设定一个唯一id,并填写其他属性。注意这个package id需要在nuget.org全站唯一,我们建议你使用包前缀名来避免重复,比如: ${UserName}.PackageName

打包

  1. 将配置改为Release
  2. 右键项目--> 打包

如果你没有看到打包命令,你的项目可能不是SDk-style风格的项目,这是要使用

nuget.exe Cli(或者迁移到SDK-style项目,再使用dotnet Cli)。

  1. Visual Studio构建项目并创建.nupkg文件,插看输出窗体,获取包文件的路径。

发布包

有了.nupkg文件,你可以从nuget.org获取一个API key(这个Key标记了你这个nuget账户),结合dotnet cli发布包。

获取API Key

  1. 登陆nuget.org账户
  2. 点击右上角你的账户名字,选择API keys
  3. 创建---> 选择范围--> Push, 在Glob pattern填入*
  4. 一旦生成key,Copy并尽早保存key,这个key将在dotnet Cli命令中用到

尽快保存你的key,如果你再次返回这个页面,你需要重新生成key并Copy.

发布包

转到包含.nupkg文件的目录,执行下面命令

dotnet nuget push AppLogger.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json

显示如下结果:

info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
info : PUT https://www.nuget.org/api/v2/package/
info : Created https://www.nuget.org/api/v2/package/ 12620ms
info : Your package was pushed.

推送命令中的错误通常表明存在问题,如:

  • 您可能忘记了更新项目中的版本号,因此尝试发布已经存在的软件包。
  • 您尝试使用主机上已存在的标识符发布程序包时,也会看到错误:名称“ AppLogger”已经存在。
Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

如果您使用的是刚刚创建的有效API key,则此消息表示命名冲突,从错误的“权限”部分无法完全看出这一点。更改程序包标识符,重建项目,重新创建.nupkg文件,然后重试push命令。

其他一些包管理的操作,请在nuget包管理中心倒腾

使用dotnet Cli向nuget发布包的更多相关文章

  1. vs2017 用 nuget发布包时报错

    安装了 vs2017后, 发布nuget 时报错: Failed to load msbuild Toolset 未能加载文件或程序集"Microsoft.Build, Version=14 ...

  2. 如何使用NugetPackageExplorer 创建Nuget发布包,简易版

    在上一篇博客中,详细介绍了个人Nuget服务器的搭建.这篇博客中,将详细介绍一下如何使用NugetPackageExplorer工具制作可以发布到Nuget服务器上包. 直奔主题 在开始之前,需要下载 ...

  3. 使用 dotnet cli 命令上传 nuget 程序包

    前言 前面写了一篇文章介绍了如何将自己的程序集打包成nuget package并上传到nuget.org,传送门.全部是通过网页端来进行操作的,现在介绍一种比较方便快捷的方法就是用dotnet cli ...

  4. nuget包管理nuget服务器发布包时出现请求报错 406 (Not Acceptable)

    在window服务器上部署nuget服务器时,发布包时出现请求报错 406 (Not Acceptable) 验证用户名.密码正确的情况下,还是出现上面错误.后面跟踪服务器日志,发现window\te ...

  5. 使用 dotnet CLI 来打包和发布 .NET Core nuget package

    原文链接:使用 dotnet CLI 来打包和发布 .NET Core nuget package 如何使用 visual studio 2015/2017 打包和发布 Nuget package, ...

  6. 尝试在mac上用dotnet cli运行asp.net core示例程序

    自从知道微软用dotnet cli取代dnx之后,一直在等dotnet cli支持asp.net core... 昨天看到这篇新闻(ASP.NET Core 1.0 Hello World)后,才知道 ...

  7. 利用npm安装/删除/发布/更新/撤销发布包 --社会我npm哥,好用话不多

      一.什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率   1.从社区的角度:把针对某一特定 ...

  8. 使用 DotNet CLI 创建自定义的 WPF 项目模板

    描述 当我们安装完 DotNetCore 3.0 版本的 SDK 后,我们就可以创建基于 DotNetCore 的 WPF 项目模板,通过如下 CLI 可以方便快捷的创建并运行我们的项目: dotne ...

  9. 【npm】利用npm安装/删除/发布/更新/撤销发布包

      什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率   1.从社区的角度:把针对某一特定问题 ...

随机推荐

  1. java 使用抽象工厂封装特性方法

    1.创建抽象类:封装含有相同特性的方法. */ public abstract class AbstractPayment { public abstract String progress() th ...

  2. python之文件操作模块(os和shutil)

      1.os.name #操作系统类型 如果是posix,说明系统是liunx.Unix或Mac OS X,如果是nt,就是windows2.os.enviro #操作系统中定义的环境变量3.os.e ...

  3. 在linux下执行git clone、git pull 、git push等操作免密

    1. 通过ssh密钥实现 ssh-keygen -t rsa -C "你的邮箱" -f "自己定义的目录" 打开: id_rsa.pub ,将文件内容复制到 g ...

  4. nginx配置之禁止访问和404错误功能配置

    禁止访问功能配置 nginx.conf中的http{}中的server{}的location ..{}中: location / { #拒绝访问,192.168.16.0网段的同学都无法访问 /24是 ...

  5. 五、数据类型(1):整数&&带小数点的数

    1.整数 int printf("%d",...); scanf("%d",&...); 2.带小数点的数 double printf("%f ...

  6. 使用vue2.0创建的项目的步骤

    1.由于vue项目依赖 node.js npm 需要先安装.   若没有请先安装,请百度 //检查是否有node.js  npm vue win+r   输入cmd  输入node -v  回车 会出 ...

  7. RAC配置2个私网网卡使用HAIP服务

    如果是在oracle 10gRAC, 私网网卡冗余保护只能使用操作系统网卡绑定方式,但是到了oracle 11g,如果担心一个私网网卡故障导致rac节点驱逐,可以使用2个私网网卡,Oracle将自动使 ...

  8. Nginx 实现 HTTPS(基于 Let's Encrypt 的免费证书)

    SSL / TLS加密会为您的用户带来更高的搜索排名和更好的安全性. Let’s Encrypt 是一个认证机构(CA).它可以提供免费证书,并且已经被大多数浏览器所信任.另外,通过工具 Certbo ...

  9. JedisPool的使用-连接池

    为什么要使用JedisPool 1,获取Jedis实例需要从JedisPool中获取 2,用完Jedis实例需要返还给JedisPool 3,如果Jedis在使用过程中出错,则也需要还给JedisPo ...

  10. Collection接口和list,set子类

    Collection接口常用的子接口有:List接口.Set接口List接口常用的子类有:ArrayList类.LinkedList类Set接口常用的子类有:HashSet类.LinkedHashSe ...