You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用.NET Core构建任务制作预发布包并实现分发包流程?

分步实现你的CI构建与发布策略

这问题我之前帮不少团队落地过,刚好完美匹配你的需求——同时生成预发布/正式两类包,自动推送预发布,正式包支持单独手动发布。咱们一步步来拆解:

1. 确认csproj版本配置(你当前的配置已经没问题)

你现有的csproj配置完全适配这个场景:

<VersionPrefix>1.8.0</VersionPrefix>
<VersionSuffix>$(VersionSuffix)</VersionSuffix>

这个配置的核心是通过外部传入的VersionSuffix参数动态控制版本后缀——不传就是正式版,传入构建号就是预发布版。

2. CI构建阶段:生成两类包

在CI流程里,你需要执行两次dotnet pack命令,分别生成预发布包和正式包,并且把它们放到不同的输出目录,方便后续区分处理:

2.1 生成预发布包

用CI的构建号作为预发布后缀(比如GitHub Actions的GITHUB_RUN_NUMBER、Azure Pipelines的Build.BuildNumber),命令如下:

dotnet pack --configuration Release -p:VersionSuffix=ci-$(BUILD_NUMBER) --output ./packages/pre-release

生成的包版本会是1.8.0-ci-xxx(xxx是你的构建号),完全符合NuGet的预发布版本规范。

2.2 生成正式发布包

不传入VersionSuffix参数,直接打包即可:

dotnet pack --configuration Release --output ./packages/stable

生成的包版本就是你定义的1.8.0,是标准的正式版。

小提示:如果你的解决方案有多个csproj,dotnet pack会默认打包所有项目,不用单独逐个执行,除非你有特殊排除需求。

3. 发布阶段:自动推预发布 + 手动单独发正式包

3.1 自动推送所有预发布包

构建完成后,直接在CI里自动执行推送命令,把pre-release目录下的所有包推送到NuGet源:

dotnet nuget push ./packages/pre-release/*.nupkg --source <你的NuGet源地址> --api-key <你的API密钥>

记得把<你的NuGet源地址>和<你的API密钥>换成实际值,并且API密钥要存在CI的机密变量里(比如GitHub Secrets、Azure Pipelines机密变量),绝对不能明文写在脚本里。

3.2 手动单独发布正式包

这一步需要在CI平台里配置手动触发的发布任务,让你可以选择单个正式包推送。举两个主流CI平台的实现思路:

比如GitHub Actions:

  • 用workflow_dispatch事件创建一个单独的发布工作流,添加一个输入参数让你选择要发布的项目(比如ProjectA、ProjectB)。
  • 工作流里根据选择的项目,推送对应的正式包:
dotnet nuget push ./packages/stable/${{ inputs.project-name }}.1.8.0.nupkg --source <你的NuGet源地址> --api-key ${{ secrets.NUGET_API_KEY }}

这样你就能在GitHub Actions页面手动触发,选择要发布的项目单独推送。

比如Azure Pipelines:

  • 在发布管道里创建多个“阶段”,每个阶段对应一个项目的正式包发布。
  • 给每个阶段设置“手动审批”,只有你手动确认后才会执行推送命令。
  • 每个阶段的推送命令类似:
dotnet nuget push ./packages/stable/ProjectA.1.8.0.nupkg --source <你的NuGet源地址> --api-key $(NuGetApiKey)

额外建议:如果你的版本号需要自动递增(比如下次正式版是1.9.0),可以把VersionPrefix也改成通过CI参数传入,这样不用每次修改csproj文件,更灵活。

内容的提问来源于stack exchange,提问作者Martijn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:20:07