如何将项目打包上传到NuGet服务器?

作者:西瓜程序猿
主页传送门:https://www.cnblogs.com/kimiliucn
前言
在我写[在.NET Framework中使用RocketMQ(阿里云版)]这篇博客的时候,因为封装了很多代码在单独的DLL中,包括生产者、消费者以及官方SDK等等,然后都在博客中体现出来导致博客大量代码,然后有位读者就建议打包成NuGet包,大家也可以直接安装引入调用,我也觉得很不错,于是就有了这篇文章啦!
那NuGet是什么呢?NuGet是.NET的包管理器,NuGet客户端工具提供了生成和使用包的能力,NuGet库是所有包作者和消费者使用的中心包存储库。那来看一下如何将代码打包上传到NuGet服务器吧!
一、提前准备
1.1-登录NuGet官网
(1)打开官方网址,然后点击【Sign in with Microsoft】使用微软账号登录。

(2)输入微软邮箱,然后点击【下一步】进行登录。
1.2-创建API Key秘钥
(1)点击右上角用户名称,然后点击【API Keys】。
(2)然后点击【Create】,在输入必填的信息。【KeyName】可以填项目包名,也可以自定义命名,唯一就行了。然后【Glob Pattern】可以填写"*"来替换任何序列。
API密钥是一种令牌,可以向NuGet Gallery识别身份。NuGet命令行实用程序允许使用API密钥向库提交NuGet包以进行身份验证。
注意要对API密钥保密!如果某个密钥意外泄露,可以随时生成一个新密钥。如有必要,还可以删除现有的API密钥。
注意:要将包推送到nuget.org,必须使用nuget.exe v4.1.0或更高版本,它实现了所需的nuget协议。
(3)然后点击【Copy】复制秘钥,请自行将秘钥保存好,后面会用到。
二、创建与打包项目
(1) [西瓜程序猿]创建一个名为【Kimi.RocketMQ.NET】类库,目标框架使用【.NET Framework 4.8】,输出类型为【类库】。
(2)代码编写后,然后使用Release模式生成dll。(我这没有依赖其他任何外部包,如果依赖了,上传打包前需要进行配置)

(3) 打开【AssemblyInfo.cs】文件,设置相关属性值和版本。
(4)为了方便管理文件,我们可以单独新建一个文件夹保存要上传的文件。[西瓜程序猿]这里新建名为【Kimi.RocketMQ.NET】的文件夹。
将编译好的DLL,放在此文件夹。
然后新建一个【readme.md】用来介绍文件,会在包管理中显示此文件的内容
在设计一个ICON(图标需要上传到线上,然后将外网能访问的图片地址进行上传到NuGet),作为nuget包的图标。大小建议是128px或256px(注意:文件格式必须是.png)。
文件夹截图:
三、上传NuGet
[西瓜程序猿]准备了要上传NuGet上传使用的资源包,如果大家要下载最新版请去官网下载。可以访问下载(如果失效了,请联系我)。
下载地址(编码:0m7AToKX):https://yongteng.lanzoub.com/ip4nN17bdtbi
密码: 5jh4
文件截图:
3.1-使用可视化方式【推荐】
3.1.1-下载工具
(1)首页将下载好资源包里面的【PackageExplorer.4.4.72】文件夹,复制到一个固定的地方,不要删除了。[西瓜程序猿]放在【D:\RuanjianAnzhuang\PackageExplorer.4.4.72】路径下了,我们打开【NuGetPackageExplorer.exe】应用程序。
如果需要在官网下载最新版,可以点击这个链接:
官方下载:https://www.microsoft.com/zh-cn/p/nuget-package-explorer/9wzdncrdmdm3?activetab=pivot:overviewtab
(2)然后点击【Create a new package (CtrI+N)
】创建一个新Package。
3.1.2-配置相关包
(1)新增【lib】文件夹。

(2)然后新选择响应的框架版本,会自动创建版本文件夹,比如[西瓜程序猿]创建的【Kimi.RocketMQ.NET】包是给.NET Framework使用的,我这边就先创建这些。

也可以自己创建文件夹,比如没有4.8版本,那可以自行创建一个为【net48】文件夹。

(3)然后再每个文件夹中,添加之前打包后的DLL包。
添加好文件后,目录是这样的:
(3)然后编辑上传数据,选择【Edit】——>【Edit Metadata】,然后填写相关信息。

(4)然后如果有依赖性,还需添加项目依赖,依赖哪些框架比如.NETFramework,.NETStandard等。
(5)然后编辑完成,看一下效果。
(5)点击这个可以看到配置的源代码。
代码:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Kimi.RocketMQ.NET</id>
<version>1.0.9</version>
<title>Kimi.RocketMQ.NET</title>
<authors>西瓜程序猿</authors>
<owners>西瓜程序猿</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
<projectUrl>https://www.cnblogs.com/kimiliucn/p/17662052.html</projectUrl>
<iconUrl>http://xxx.xxx.xxx.192:7980/Temp_Storage/Images/2023-08-31/9dd8dbcccd314a31835c69ea344b0216.png</iconUrl>
<description>.NET Framework使用RocketMQ(阿里云版)</description>
<summary>.NET Framework使用RocketMQ(阿里云版)</summary>
<releaseNotes>发布1.0.9</releaseNotes>
<copyright>Copyright 2023 西瓜程序猿</copyright>
<language>zh-CN</language>
<tags>Kimi.RocketMQ.NET</tags>
<dependencies>
<group targetFramework=".NETFramework4.8" />
</dependencies>
</metadata>
</package>
(6)点击【File】——>【Save As】保存nupkg文件。
文件截图:
3.3-上传到nuget服务器
(1)点击【File】——>【Publish】。
(2)【Publish key or PAT】填写秘钥Key,然后点击【Publish】发布,只要没报错就表示上传成功了。
(3)稍等1-3分钟,然后会收到上传成功的邮件通知。
(4)然后可以去官网看看是否此版本发布成功了。

3.2-使用命令方式
3.2.1-下载软件配置环境
(1)点击下面地址下载软件,选择比较新的版本即可(如果是通过上面的链接下载了资源包,就可以跳过这一步了,直接看第二步骤)。

下载好后得到:
(2)把下载好的【nuget.exe】这个文件,放在一个固定的地方,不要删了。[西瓜程序猿]放在这个目录【D:\RuanjianAnzhuang\nuget_client】。
(3)然后来配置环境变量。点击【此电脑】,右击【属性】——>高级系统设置——>环境变量——>系统变量——>选择Path——>编辑——>新建——>填写【D:\RuanjianAnzhuang\nuget_client】,大家根据自己路径配置哈。
(4)测试是否配置成功。按【win+R】键,然后输入cmd,在输入【nuget】命令查看。
命令:nuget
配置成功截图:
配置失败截图:
3.2.2-配置全局Push源地址
配置模拟的push源为nuget.org,输入以下命令:
nuget config -Set DefaultPushSource=nuget.org
3.2.3-设置API Key秘钥
使用下面命令进行设置Nuget的API Key(将my_api_key参数替换成自己生成的APIKey)
nuget setApiKey my_api_key
成功截图:
3.2.4-生成nuspec文件
使用【nuget spec】命令生产.nuspec 文件,文件xml格式的。
命令:nuget spec
成功截图:
3.2.5-生成nupkg文件
使用【nuget pack】命令生成.nupkg文件。
命令:nuget pack
成功截图:
3.2.6-上传到nuget服务器
输入以下命令,可以将.nupkg包上传发布到NuGet服务器上(将my_api_key参数替换成自己生成的APIKey)。
命令:nuget push Kimi.RocketMQ.NET.1.0.0.nupkg my_api_key -Source https://api.nuget.org/v3/index.json
上传成功后的邮件:
上传成功后,需要等待10几分钟。官方需要先审核,审核通过后还需要进行重新索引,然后还需要同步。等待10多分钟后,就可以搜索到上传的包了。
四、NuGet包的管理
4.1-删除NuGet包
NuGet包无法删除,但是隐藏对应的版本。
选择要隐藏的版本后,然后取消勾选【List in search results】,然后点击【Save】保存即可。
效果(隐藏后就搜索不到1.0.0的版本了):
五、防踩坑指南
5.1-响应状态代码不指示成功: 403
详细错误:
响应状态代码不指示成功: 403 (The specified API key is invalid, has expired, or does not have permission to access the specified package.)。
解决方案:提示秘钥Key无效或者过期了,可以去后台重新生成一个,按照【1.2】步骤操作。
5.2-This package has not been indexed yet
详细错误:
This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.
错误截图:
解决方案:错误提示说"此程序包尚未编制索引。它将出现在搜索结果中,并可在索引完成后进行安装/还原"。所以需要等10分钟左右就行了,等程序包编制好索引就可以在NuGet客户端搜索到了。
5.3-在以下主源中找不到包“Kimi.RocketMQ.NET 1.0.5”
详细错误:
在以下主源中找不到包“Kimi.RocketMQ.NET 1.0.5”:“https://api.nuget.org/v3/index.json”。请验证你的所有联机包源是否都可用,以及是否正确指定了包 ID、版本。
解决方案:等待10分钟左右就能找到了。因为上传成功后需要进行编制索引、同步等操作。
5.4-响应状态代码不指示成功: 409
详细错误:
响应状态代码不指示成功: 409 (A package with ID 'Kimi.RocketMQ.NET' and version '1.0.5' already exists and cannot be modified.)。
错误截图:
解决方案:说明这个【1.0.9】的版本已经存在了,修改版本号重新发布即可。
原文链接:https://www.cnblogs.com/kimiliucn/p/17675287.html
如何将项目打包上传到NuGet服务器?的更多相关文章
- 在pom.xml中使用distributionManagement将项目打包上传到nexus私服
本文介绍 如何在pom.xml中使用distributionManagement将项目打包上传到nexus私服 1.pom.xml文件添加distributionManagement节点 <!- ...
- 发布新的模型类包(用于上传到 NuGet 服务器上)
生成包文件: 1.修改了模型类之后,在项目上点击右键,在列表菜单中选择 “编辑 …….csproj”,然后将里面的三个版本号都换成新的版本号. 2.右键项目,点击“打包” 3.复制输出信息中生成的包的 ...
- pycharm项目代码上传远程centos服务器
pycharm项目代码上传远程centos服务器 在工作中,我们经常会遇到如下情况,在windows系统下的pycharm中开发项目,但是需要在linux服务器上部署和运行我们的项目.那么我们的项目是 ...
- 如何把你的.net程序打包上传到nuget
写在前面 每个.net开发者都经常用nuget管理自己的程序包,install一个json组件啊,一个工具类什么的,这些都是别人写好的.如果我也写好了一个自己感觉很拿的出手的组件,想轻松的使用nuge ...
- 使用Maven打包项目并上传到Linux服务器
Maven打包: 项目右键Run as-->Maven build...--> 出来下面的界面,注意红色部分的填写,Goals填写package表示打包,下面的Skip Tests表示打 ...
- 【转】iOS10项目打包上传被拒关于隐私权限问题
原文网址:http://blog.csdn.net/yidu_blog/article/details/53064987 今天项目打包提交.收到了苹果的邮件.主要内容: This app attemp ...
- 如何将maven项目打包上传到私服
比如我们想要把项目通过maven生产源码包和文档包并发布到自己的私服上,有两个maven插件可以做到这些工作,一个是maven-source-plugin,另一个是maven-javadoc-plug ...
- Nuget多项目批量打包上传服务器的简明教程
本篇不会介绍Nuget是什么,如何打包上传Nuget包,怎么搭建私有Nuget服务器.这些问题园子里都有相应的文章分享,这里不做过多阐述.另外本文假设你已经下载了Nuget.exe,并且已经设置好了环 ...
- 个人开源项目如何上传maven中央仓库
最近在写一些开源项目,想把自己写的东西放到maven中央仓库,提供给更多的人使用.所以写这一篇文章,记录一下自研开源项目jar包上传同步maven中央仓库成功的整个过程,这其中还是有不少的坑的. 目录 ...
- windows下GitHub的安装、配置以及项目的上传过程详细介绍
概要 本文主要介绍了在Win10系统中安装Github终端.如何配置安装好的Git终端以及如何利用Git终端将自己的项目上传到远程服务器中 操作必备 win10系统电脑一台.良好的互联网连接.GitH ...
随机推荐
- hvv蓝初面试常见漏洞问题(下)
hvv蓝初面试常见漏洞问题(上) 6.ssrf 服务端伪造请求 原理 服务端提供了向其他服务器应用获取数据的功能,而没有对目标地址做任何过滤和限制.攻击者进而利用其对内部资源进行攻击.(通俗来说:就是 ...
- 如何制作 Storybook Day 网页上的 3D 效果?
Storybook 刚刚达到了一个重要的里程牌:7.0 版本!为了庆祝,该团队举办了他们的第一次用户大会 - Storybook Day.为了更特别,在活动页面中添加了一个视觉上令人惊叹的 3D 插图 ...
- 你还在用Object.equals()方法吗?
前言 当<阿里巴巴Java开发手册>发布后,我也是仔细进行了阅读,想从中找出一些"标准",让自己的代码质量提高.手册中对 Object 的 equals 方法的使用进行 ...
- Volo.Abp升级小记(二)创建全新微服务模块
@ 目录 创建模块 领域层 应用层 数据库和仓储 控制器 配置微服务 测试微服务 微服务注册 添加资源配置 配置网关 运行项目 假设有一个按照官方sample搭建的微服务项目,并安装好了abp-cli ...
- mybatis拦截器实现数据权限
前端的菜单和按钮权限都可以通过配置来实现,但很多时候,后台查询数据库数据的权限需要通过手动添加SQL来实现. 比如员工打卡记录表,有id,name,dpt_id,company_id等字段,后两个表示 ...
- 在Istio中,到底怎么获取 Envoy 访问日志?
Envoy 访问日志记录了通过 Envoy 进行请求 / 响应交互的相关记录,可以方便地了解具体通信过程和调试定位问题. 环境准备 部署 httpbin 服务: kubectl apply -f sa ...
- chatgpt入口,免费在线chatgpt--与人工智能聊天?尝试chatgpt入口,免费在线chatgpt吧!
介绍一款人工智能聊天机器人--chatgpt入口 chatgpt是一款智能聊天机器人,它能够与人类进行自然语言对话,可以回答问题.提供建议,还可以玩游戏和聊天互动,是当前最受欢迎的人工智能聊天工具之一 ...
- Git 多账号配置
本地登录多账号并连接对应的远程仓库,主要就是 密钥配对,我这里刚开始配了密钥也将密钥复制到ssh但是还是连接不到第二个远程仓库,后来发现是需要 密钥代理 1.在当前项目下更改git账号信息: git ...
- 一次oracle行级锁导致的问题
分析问题:我在plsql/developer是用的system用户连接的数据库,而在crt用 sqlplus / as sysdba 连接数据库,是sys用户.现在在plsql/developer ...
- 自己动手实现rpc框架(二) 实现集群间rpc通信
自己动手实现rpc框架(二) 实现集群间rpc通信 1. 集群间rpc通信 上一篇博客中MyRpc框架实现了基本的点对点rpc通信功能.而在这篇博客中我们需要实现MyRpc的集群间rpc通信功能. 自 ...