AzureDevOps / VSTS Build - 无法在BUILD_BUILDNUMBER

时间:2016-04-14 18:01:56

标签: azure-devops azure-pipelines

设置一个简单的类库来构建和发布到VSTS自己的feed,当NuGet包运行时,我看到了这个错误。

  

无法在BUILD_BUILDNUMBER中找到版本号数据

我有#34;使用内部版本编号到版本包"选项勾选。预期的VSTS才能正常工作。

4 个答案:

答案 0 :(得分:29)

"使用内部版本编号到版本包"陈述:

  

将使用内部版本编号来打包您的版本。在“常规”下,将构建格式设置为“$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)'

在此之后确实让我解决了这个问题(以及新问题)。

默认值:

[Default value]

正确的价值:

[Correct Value]

答案 1 :(得分:9)

这是因为您的内部版本号与“Nuget Packager”步骤中的正则表达式不匹配。以下是nuget packager任务用于查找内部版本号的正则表达式。您可以根据此设置构建号格式。一般情况下,1.2.3或1.2.3.4等格式可以使用。

Write-Verbose "Autoversion: Getting version number from build"
##Get Version from Build

# Regular expression pattern to find the version in the build number 
# and then apply it to the assemblies
$VersionRegex = "\d+\.\d+\.\d+(?:\.\d+)?"

答案 2 :(得分:0)

我的.nuspec文件中有一个变量:

<tags>Build#$build$</tags>

在包构建步骤中未正确参数化。在构建编辑器中打开包步骤后,我将“高级”部分扩展为“附加构建属性”此文本

build=$(Build.BuildNumber)

答案 3 :(得分:0)

如果您想要的是major.minor.patch.unique-to-build,则可以使用Use the date and time选项。

在yaml中,等效值为

- task: NuGetCommand@2
  displayName: Pack
  inputs:
    command: 'pack'
    packagesToPack: '**/*.csproj'
    versioningScheme: 'byPrereleaseNumber'
    majorVersion: '1'
    minorVersion: '0'
    patchVersion: '0'