如何从nuspec中提取版本号到TeamCity?

时间:2014-11-21 15:54:04

标签: teamcity nuget teamcity-8.0

如何从nuspec中将版本号提取到TeamCity中?

我们有一个带有相应nuspec节点的csproj文件:

1.3.2

在TeamCity中,我想构建这个项目,并使用1.3.2。%build.counter%创建一个NuGet包。例如,1.3.2.322。重要的是版本号来自源代码控制(NuSpec)中的文件,我不想将其复制为TeamCity中的变量。有没有办法从NuSpec文件中提取1.3.2并将其用作TeamCity变量?

2 个答案:

答案 0 :(得分:5)

此方法适用于TeamCity的10+版本,可以解决Select-Xml和命名空间的问题。

$Version = ([xml](Get-Content .\MyProject.nuspec)).package.metadata.version
$BuildCounter = %build.counter%

echo "##teamcity[setParameter name='PackageVersion' value='$Version.$BuildCounter']"

答案 1 :(得分:4)

使用TeamCity service messages

,我可以想到几种让我想到的方法

使用PowerShell构建步骤,就像这样(道歉我的PS不是很好):

$buildcounter = %build.counter%
$node = Select-Xml -XPath "/package/metadata/version" -Path /path/to/nuspec.nuspec
$version = $node.Node.InnerText
Write-Output "##teamcity[buildNumber '$version.$buildcounter']"

或者,类似地,引导像XmlStarlet这样的工具:

$buildcounter = "1231"
$version = xml sel -T -t -v "/package/metadata/version" Package.nuspec
Write-Output "##teamcity[buildNumber '$version.$buildcounter']"

需要在需要内部版本号的任何其他步骤之前添加此步骤。