Fast.NET 的 17 个 NuGet 包独立维护版本。发布属于不可逆外部操作,只有维护者完成审核并明确确认后才能执行。
- 在受影响项目的
.csproj中更新<Version>。 - 更新
CHANGELOG.md、README 和模块文档。 - 确认
Directory.Packages.props中的依赖版本与目标框架一致。 - 构建并打包全部 SDK 项目:
UploadNuget.bat pack批处理文件依次还原解决方案、执行 dotnet build,构建成功后才执行 dotnet pack。pack 模式完成打包后直接结束,不执行发布。
所有 .nupkg 和 .snupkg 位于 nupkgs/,批处理文件不会递归清理已有目录。发布时会根据每个项目当前的 PackageId 和 PackageVersion 识别包,因此不会选中目录中遗留的旧版本。
发布前至少抽查:
.nuspec中的包名、版本、说明、许可证、仓库地址和依赖版本。Fast.IaaS仅包含lib/netstandard2.1。- 其他包包含
lib/net8.0、lib/net9.0和lib/net10.0。 - 每个目标框架同时包含 DLL 与 XML API 文档。
- 符号包为
.snupkg。
发布前在当前环境中设置 NUGET_API_KEY。NUGET_SOURCE 为可选项,默认发布到 NuGet.org。
UploadNuget.bat publish-all
UploadNuget.bat publish-one Fast.Cachepublish-all 会依次构建、打包并发布当前全部 17 个包。publish-one 会完成构建和打包,但只发布指定包Id。不带参数运行 UploadNuget.bat 时,会显示构建配置和包选择菜单,单包发布后可继续选择其他包。发布前会展示目标包和发布源,随后调用 dotnet nuget push。
脚本将 DOTNET_CLI_UI_LANGUAGE=zh-CN 限定在当前进程内。PowerShell 可用时,先强制 NuGet 重定向输出使用 UTF-8,在原文中识别中英文成功、重复包、警告和错误诊断,再转换为 CMD 使用的 CP936 显示。PowerShell 不可用时,NuGet 直接输出到控制台;非零退出码判定为失败,零退出码因无法可靠分类详细结果而保守判定为警告。
| 结果 | 颜色 | 判定 |
|---|---|---|
| 成功 | 绿色 | 退出码为 0,存在明确的发布成功消息,且没有警告、错误或重复包提示 |
| 已存在跳过 | 深灰色 | 退出码为 0,仅跳过已存在的版本,不计入成功数 |
| 警告 | 黄色 | 出现警告、主包与符号包部分成功/部分跳过,或无法确认完整发布结果 |
| 失败 | 红色 | 退出码非 0,或诊断输出包含错误,即使退出码为 0 也按失败处理 |
汇总按每次发布尝试分别统计成功、跳过、警告和失败,并列出需要检查的包。仅成功或跳过时返回 0;存在警告但没有失败时返回 2;存在失败时返回 1。交互模式即使只产生跳过或警告,选择结束时也会显示汇总。
汇总按结果分组,计数和包名使用对应颜色,每个包名单独占一行;成功的包也会列出。颜色通过系统 PowerShell 的控制台 API 设置,输出后恢复原色。输出重定向或 PowerShell 不可用时使用纯文本,不生成 ANSI 转义序列。
不要把 API Key 写入仓库、脚本、日志、命令历史或 Issue。发布完成后清除当前进程中的环境变量,并在 NuGet.org 检查包元数据、README、依赖和符号包状态。