长话短说, 今天分享如何在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包管理中心倒腾

最新文章

  1. JavaScript跨域调用、JSONP、CORS与ASP.NET Web API[共8篇]
  2. XIB 上的控件不显示怎么办
  3. 7个你可能不认识的CSS单位:rem vh vw vmin vmax ex ch
  4. (转)SpringSecurity扩展User类,获取Session
  5. 网络编程之socket(转)
  6. 错误处理--pure specifier can only be specified for functions
  7. linux/shell 文本文件删除/删掉空行
  8. OpenStack Hacker养成指南
  9. 关于tableView的那些坑(一)—— automaticallyAdjustsScrollViewInsets属性
  10. http://www.cnblogs.com/fczjuever/archive/2013/04/05/3000680.html
  11. hdu 4915 Parenthese sequence--2014 Multi-University Training Contest 5
  12. 一个简单的Servlet工具
  13. C++技术问题总结-第8篇 STL内存池是怎么实现的
  14. anaconda下安装新包一直报错(‘parse() got an unexpected keyword argument 'transport_encoding'’)
  15. Docker网络和容器的通信
  16. js对json解析获取对应属性的值,JSON.stringify()和JSON.parse()
  17. 如何将Drawable转为Bitmap?
  18. SQL 四大功能DDL/DML/DCL/TCL
  19. oracle任务job
  20. TYAttributedLabel——简单,强大的iOS属性文本控件

热门文章

  1. android Viewpager禁用/开启滑动切换功能
  2. springmvc 校验--JSR
  3. 6、保持会话(save)
  4. Node教程——API接口开发(Node版的CRUD通用接口的搭建)(MangoDB+Express_Version2)
  5. webstorm-在不删除硬盘文件的条件下移除项目
  6. CF832C
  7. 你以为只有马云会灌鸡汤?Linux 命令行也会!
  8. afert和b的伪类画三角形
  9. jmeter之cookies管理器的使用
  10. 关于 npm 包管理器最常用的内容都在这儿了