背景

由于 Natasha 及周边项目发版任务多,文件结构也不简单,之前一直使用基于 Github 管道脚本和 XUnit 来发版。这个方案对于发版环境与条件依赖性较强,且不够灵活,因此萌生出做一个本地管理 Nuget 发版工具的想法,取名为 Jester.

下载地址:https://github.com/NMSAzulX/Jester.Tools.Nuget/releases/tag/1.0.0.0

若出现问题可在本篇文章下留言,或在仓储地址中提交 ISSUE.

运行环境

  1. 采用独立打包。
  2. Win64。

安全说明

目前不打算公开这种工具类的源代码,因此列出相关依赖项以保证用户自主评估安全风险。

依赖项列表:

  1. Microsoft.CodeAnalysis.CSharp Roslyn 的 C# 语言构建库, 作者:Microsoft
  2. NuGet.Versioning Semantic Versioning 的操作库,作者: Microsoft
  3. Spectre.Console 控制台界面,作者: Patrik Svensson, Phil Scott, Nils Andresen, Cedric Luthi, Frank Ray.

Spectre.Console 项目地址:https://github.com/spectreconsole/spectre.console

个人觉得不太好用,还有 BUG.

网络使用:

  1. 使用 "pl" 命令查看打包信息列表时,向 NUGET 请求包信息。
  2. 使用 "pack" 命令打包时,向 NUGET 请求包信息以做校验本地包与服务器包上的版本信息。
  3. 使用 "push" 命令推送包时,向用户指定源服务器或 NUGET 官方源推送包。

文件改变:

  1. 使用 "pack" 命令时,会更新或创建 csproj 文件的版本信息。
  2. 使用 "pack" 命令时,会更新或创建 csproj 文件中的 None Include 节点信息。

工具使用

界面与输入端

命令支持

输入命令 {?} 可以查看改工具支持的命令。

Nuget Key 操作

#查看当前 nuget key 列表
nl #添加一个 nuget key 发布方案
na publishTest oy2nabcdefghiojxv http://公司的nuget地址
#不指定 source 使用 nuget 官方的地址
na publishTest oy2nabcdefghiojxv #删除发布方案
nd publishTest

Solution 操作

该工具以 sln 解决方案为单位,支持添加、删除、更新 NUGET KEY 等操作。

以下为命令使用案例:

#查看当前存在的解决方案
sl #增加一个解决方案
sa c://mysolution #删除列表中第一个方案
sd 0 #让该方案在发布时使用某个 NUGET KEY
#锁定第一个方案
sc 0

检查与打包

该工具以 CHANGELOG.MD 文件为打包发版依据。

#查看当前解决方案列表
sl #锁定你要操作的解决方案
#锁定列表中第一个解决方案
#若没有 CHANGELOG 文件工具将自动生成一个文件
#CHANGELOG 中有相应的版本说明和使用案例
sc 0 #按照文件中的案例格式编辑被打开的 CHANGELOG 文件 #使用 pl 查看当前 CHANGELOG 文件与当前解决方案的匹配信息【非必要】
pl #确认无误,打包
pack #若不发布隐式 using 文件,则
pack --no-using #若不合并 targets 文件,则
pack --no-combine #若有多个 targets 文件,则
#1. 去掉文件中的 <project></project> 节点标签,以便 Jester 合并内容到同一个 <project> 节点下。
#2. 不要使用 Jester.Usings.targets 来命名文件,该文件预留给了 Jester 输出隐式命名空间用。
#3. 不要使用 Jester.Combine.targets 来命名文件,该文件预留给了 Jester 合并所有 targets 文件的输出文件使用。 #后续会根据反馈对 pack 策略做出调整。

pl 命令会自动拉去 nuget 官方记录的版本信息,local 为本地工程文件中的版本信息,next 为 CHANGELOG 被打包的版本信息

发布

#如果之前已经锁定解决方案则不用重新锁定了
#若被锁定的解决方案没有关联发布策略
su publishTest #查看打包好的包 在 your_sln_folder/nugets 文件夹中 #发布
push

退出

按 Q 退出

基于 .NET 的 Nuget 发版工具的更多相关文章

  1. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  2. Android 发版的小工具

    Android加固包签名 我们知道自己的apk在上传市场的时候, 为了更好的包含我们的代码需要加固服务, 加固后的apk是不能直接安装的, 需要我们手动签名. 关于Android签名的知识就不在赘述了 ...

  3. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)

    TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...

  4. AEAI Portal V3.5.2门户集成平台发版说明

    AEAI Portal门户集成平台为数通畅联的核心产品,本着分享传递的理念,数通畅联将Portal_server.Portal_portlet两个项目开源,目的在于满足客户与伙伴的OEM需求,以及为广 ...

  5. 使用 shell 脚本自动获取发版指标数据

    问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...

  6. pyDash:一个基于 web 的 Linux 性能监测工具

    pyDash 是一个轻量且基于 web 的 Linux 性能监测工具,它是用 Python 和 Django 加上 Chart.js 来写的.经测试,在下面这些主流 Linux 发行版上可运行:Cen ...

  7. java生产环境增量发版陷阱【原】

    前言 在生产环境,我们为了降低发版风险,一般都只做增量发布,不做全量发布. 除非项目只有一到两人开发,对时间线和代码脉络结构一清二楚,才可全量发布. 然而增量发布也是有一定隐藏陷阱在里面的,以下就是笔 ...

  8. 阿里云移动研发平台 EMAS 助力银行业打造测试中台,提升发版效能

    随着移动互联网的发展,手机银行凭借低成本.操作简单.不受时间空间约束等优势,正逐步替代传统的网银交易方式.越来越多的银行开始了“业务移动化”转型之路,“手机APP”已经成为企业价值传递和关系维护的关键 ...

  9. Git提交代码规范 而且规范的Git提交历史,还可以直接生成项目发版的CHANGELOG(semantic-release)

    Git提交代码规范 - 木之子梦之蝶 - 博客园 https://www.cnblogs.com/liumengdie/p/7885210.html Commit message 的格式 Git 每次 ...

  10. 基于Containerd容器引擎和kubeadm工具部署K8sv1.26.3

    前文我了解了基于ubuntu2204部署containerd容器引擎以及containerd客户端工具的部署和使用相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1 ...

随机推荐

  1. 大模型训练:K8s 环境中数千节点存储最佳实践

    今天这篇博客来自全栈工程师朱唯唯,她在前不久举办的 KubeCon 中国大会上进行了该主题分享. Kubernetes 已经成为事实的应用编排标准,越来越多的应用在不断的向云原生靠拢.与此同时,人工智 ...

  2. [使用目前最新版]HybridCLR6.9.0+YooAsset2.2.4实现纯C# Unity热更新方案 (一)

    1.前言 什么是热更新 游戏或者软件更新时,无需重新下载客户端进行安装,而是在应用程序启动的情况下,在内部进行资源或者代码更新 Unity目前常用热更新解决方案 HybridCLR,Xlua,ILRu ...

  3. 推荐一款轻量级 eBPF 前端工具 ply

    1 Overview ply 是 eBPF 的 front-end 前端工具之一,专为 embedded Linux systems 开发,采用 C 语言编写,只需 libc 和内核支持 BPF 就可 ...

  4. ⼯作中有做过数据处理吗? tree 组件 根据 pid 寻找父节点

    主要是在组件和后端返回的数据之间,或者组件产⽣的数据和需要提交给后端的数据之间,有可能会出 现结构对不上,这个时候可能会处理⼀下,举个例⼦,⽐如说我们常⽤的tree型组件要求必须是嵌套的 tree型数 ...

  5. C#查漏补缺----Exception处理实现,无脑抛异常不可取

    前言 环境:.NET 8.0 系统:Windows11 参考资料:CLR via C#, .Net Core底层入门 https://andreabergia.com/blog/2023/05/err ...

  6. 云原生爱好者周刊:VMware Tanzu 社区办发布,无任何限制!

    云原生一周动态要闻: VMware Tanzu 推出社区版 Kubernetes Cluster API 1.0 版已生产就绪 Linkerd 2.11 发布 Cartografos 工作组推出云原生 ...

  7. python模拟发送、消费kafka消息

    参考文章: https://zhuanlan.zhihu.com/p/279784873 生产者代码: import traceback from kafka import KafkaProducer ...

  8. Nuxt.js 应用中的 builder:watch 事件钩子详解

    title: Nuxt.js 应用中的 builder:watch 事件钩子详解 date: 2024/10/24 updated: 2024/10/24 author: cmdragon excer ...

  9. Solon Ioc 的魔法之注解注入器(也可叫虚空注入器)

    很多人惊叹于 Solon 的注入能力,一个注解怎可注万物??? 一.注解注入器 Solon Ioc 的四大魔法之一:注解注入器(BeanInjector<T extends Annotation ...

  10. 3.13 Linux建立软硬链接文件(ln命令)

    如果要想说清楚 ln 命令,则必须先解释下 ext 文件系统(Linux 文件系统)是如何工作的.我们在前面讲解了分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统. ...