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

如何在TeamCity中获取新生成的NuGet包版本?

嘿,我来给你几个在TeamCity里获取新生成NuGet包版本的实用方案,都是咱们日常构建中常用的:

方案1:绑定TeamCity构建号作为NuGet版本

这是最省心的方式,直接把TeamCity的构建号和NuGet包版本绑定起来:

  • 在你的dotnet pack构建步骤里,修改命令行参数,加上版本号参数:
    dotnet pack YourProject.csproj -c Release -o %env.TEAMCITY_PACKAGES_OUTPUT%\%system.teamcity.projectName% /p:PackageVersion=%build.number%
    
  • 这样新生成的包名就是%system.teamcity.projectName%.%build.number%.nupkg,发布步骤里直接用这个路径就行:
    %env.TEAMCITY_PACKAGES_OUTPUT%\%system.teamcity.projectName%\%system.teamcity.projectName%.%build.number%.nupkg
    
  • 注意:提前在TeamCity项目设置里把构建号格式配置成符合NuGet规范的语义化版本(比如1.0.%build.counter%或者自定义的版本格式)。
方案2:从项目文件提取版本号并设置为环境变量

如果你的版本号是定义在csproj文件的<Version>节点里的,可以用脚本提取出来,传给发布步骤:

  1. 在dotnet pack步骤之后,添加一个PowerShell构建步骤,脚本内容如下:
    # 替换成你的项目文件实际路径,比如$(Build.SourcesDirectory)/YourProject/YourProject.csproj
    $projectPath = "%system.teamcity.build.workingDir%\YourProject.csproj"
    $versionNode = Select-Xml -Path $projectPath -XPath "/Project/PropertyGroup/Version"
    $packageVersion = $versionNode.Node.InnerText
    # 将版本号设置为TeamCity环境变量,供后续步骤调用
    Write-Host "##teamcity[setParameter name='env.NUGET_PACKAGE_VERSION' value='$packageVersion']"
    
  2. 然后在NuGet发布步骤的Packages配置项里,就可以用这个环境变量来定位包:
    %env.TEAMCITY_PACKAGES_OUTPUT%\%system.teamcity.projectName%\%system.teamcity.projectName%.%env.NUGET_PACKAGE_VERSION%.nupkg
    
方案3:用通配符+目录隔离定位最新包

如果不想处理版本号,也可以通过目录隔离来确保只有新生成的包在目标目录:

  • 在dotnet pack步骤里,指定输出到一个临时目录(每次构建都会清空的那种),比如:
    dotnet pack -c Release -o %env.TEAMCITY_PACKAGES_OUTPUT%\%system.teamcity.projectName%\Temp
    
  • 然后发布步骤直接用通配符匹配这个目录下的所有nupkg文件:
    %env.TEAMCITY_PACKAGES_OUTPUT%\%system.teamcity.projectName%\Temp\*.nupkg
    
  • 或者如果你的输出目录里只有新生成的包(比如构建前会清理旧包),直接用%env.TEAMCITY_PACKAGES_OUTPUT%\%system.teamcity.projectName%\*.nupkg也可以,但要注意避免旧包干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:12:54