基于 .NET 的 Nuget 发版工具

诗林  金牌会员 | 2024-12-14 13:09:28 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 578|帖子 578|积分 1734

配景

由于 Natasha 及周边项目发版任务多,文件结构也不简朴,之前不停使用基于 Github 管道脚本和 XUnit 来发版。这个方案对于发版情况与条件依赖性较强,且不够机动,因此萌生出做一个本地管理 Nuget 发版工具的想法,取名为 Jester.
下载地址:https://github.com/NMSAzulX/Jester.Tools.Nuget/releases/tag/1.0.0.0
若出现题目可在本篇文章下留言,或在仓储地址中提交 ISSUE.
运行情况


  • 采用独立打包。
  • Win64。
安全说明

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


  • Microsoft.CodeAnalysis.CSharp Roslyn 的 C# 语言构建库, 作者:Microsoft
  • NuGet.Versioning Semantic Versioning 的操作库,作者: Microsoft
  • Spectre.Console 控制台界面,作者: Patrik Svensson, Phil Scott, Nils Andresen, Cedric Luthi, Frank Ray.
Spectre.Console 项目地址:https://github.com/spectreconsole/spectre.console
个人觉得不太好用,还有 BUG.
网络使用:


  • 使用 "pl" 下令查看打包信息列表时,向 NUGET 请求包信息。
  • 使用 "pack" 下令打包时,向 NUGET 请求包信息以做校验本地包与服务器包上的版本信息。
  • 使用 "push" 下令推送包时,向用户指定源服务器或 NUGET 官方源推送包。
文件改变:


  • 使用 "pack" 下令时,会更新或创建 csproj 文件的版本信息。
  • 使用 "pack" 下令时,会更新或创建 csproj 文件中的 None Include 节点信息。
工具使用

界面与输入端


下令支持

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

Nuget Key 操作

  1. #查看当前 nuget key 列表
  2. nl
  3. #添加一个 nuget key 发布方案
  4. na publishTest oy2nabcdefghiojxv http://公司的nuget地址
  5. #不指定 source 使用 nuget 官方的地址
  6. na publishTest oy2nabcdefghiojxv
  7. #删除发布方案
  8. nd publishTest
复制代码
Solution 操作


该工具以 sln 解决方案为单位,支持添加、删除、更新 NUGET KEY 等操作。
以下为下令使用案例:
  1. #查看当前存在的解决方案
  2. sl
  3. #增加一个解决方案
  4. sa c://mysolution
  5. #删除列表中第一个方案
  6. sd 0
  7. #让该方案在发布时使用某个 NUGET KEY
  8. #锁定第一个方案
  9. sc 0
复制代码
检查与打包

该工具以 CHANGELOG.MD 文件为打包发版依据。
  1. #查看当前解决方案列表
  2. sl
  3. #锁定你要操作的解决方案
  4. #锁定列表中第一个解决方案
  5. #若没有 CHANGELOG 文件工具将自动生成一个文件
  6. #CHANGELOG 中有相应的版本说明和使用案例
  7. sc 0
  8. #按照文件中的案例格式编辑被打开的 CHANGELOG 文件
  9. #使用 pl 查看当前 CHANGELOG 文件与当前解决方案的匹配信息【非必要】
  10. pl
  11. #确认无误,打包
  12. pack
  13. #若不发布隐式 using 文件,则
  14. pack --no-using
  15. #若不合并 targets 文件,则
  16. pack --no-combine
  17. #若有多个 targets 文件,则
  18. #1. 去掉文件中的 <project></project> 节点标签,以便 Jester 合并内容到同一个 <project> 节点下。
  19. #2. 不要使用 Jester.Usings.targets 来命名文件,该文件预留给了 Jester 输出隐式命名空间用。
  20. #3. 不要使用 Jester.Combine.targets 来命名文件,该文件预留给了 Jester 合并所有 targets 文件的输出文件使用。
  21. #后续会根据反馈对 pack 策略做出调整。
复制代码
pl 下令会主动拉去 nuget 官方记录的版本信息,local 为本地工程文件中的版本信息,next 为 CHANGELOG 被打包的版本信息

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


退出

按 Q 退出

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表