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

如何在.NET流水线中用MSBuild为版本追加GitLab流水线ID

解决方案

直接指定版本(固定基础版本场景)

如果你的基础版本(如示例中的1.0.1)是固定值,直接在GitLab流水线的MSBuild命令行中拼接流水线ID即可:

# Bash 环境
msbuild YourProject.csproj \
  /p:AssemblyVersion="1.0.1.$CI_PIPELINE_IID" \
  /p:AssemblyFileVersion="1.0.1.$CI_PIPELINE_IID" \
  /p:AssemblyInformationalVersion="1.0.1.$CI_PIPELINE_IID" \
  /p:Configuration=Release
# Windows CMD 环境
msbuild YourProject.csproj ^
  /p:AssemblyVersion="1.0.1.%CI_PIPELINE_IID%" ^
  /p:AssemblyFileVersion="1.0.1.%CI_PIPELINE_IID%" ^
  /p:AssemblyInformationalVersion="1.0.1.%CI_PIPELINE_IID%" ^
  /p:Configuration=Release

动态提取基础版本(通用场景)

如果基础版本会变动,先从AssemblyInfo.Version.cs中提取前三位版本号,再拼接流水线ID:

# Bash 环境
ORIGINAL_VERSION=$(grep -oP 'AssemblyVersion\("\K[0-9]+\.[0-9]+\.[0-9]+' AssemblyInfo.Version.cs)
NEW_VERSION="$ORIGINAL_VERSION.$CI_PIPELINE_IID"

msbuild YourProject.csproj \
  /p:AssemblyVersion="$NEW_VERSION" \
  /p:AssemblyFileVersion="$NEW_VERSION" \
  /p:AssemblyInformationalVersion="$NEW_VERSION" \
  /p:Configuration=Release

原理说明

MSBuild编译时会优先使用命令行通过/p参数传递的属性值,直接覆盖AssemblyInfo.Version.cs中定义的版本字段,无需修改原文件,也不需要导入额外的MSBuild目标文件,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:05:22