2016-08-31 27 views
0

当我把我的TFS 2015年建立的定义,就是创造一个NuGet包,我设定的内部版本号格式:如何获取TFS 2015年来解析3位版本的的NuGet包装

$(BuildDefinitionName)_$(Major).$(Minor)$(rev:.r)

其中major以及我定义的次要变量或变量。当我使用步骤“的NuGet打包”,我得到的错误:

Could not find version number data in BUILD_BUILDNUMBER.

当我用4个数字,我没有得到这个错误。我如何使它与语义版本控制一起工作?

回答

0

如果你看看https://github.com/Microsoft/vsts-tasks/blob/master/Tasks/NugetPackager/NuGetPackager.ps1https://github.com/Microsoft/vsts-tasks/commit/233c112bc06b91964a559090b8acfd4452cdec0b

在此之前提交的正规表示法只是\d+\.\d+\.\d+\.\d+

if ($b_versionByBuild) 
{ 
    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+)?" 

支持3部分版本号从这次提交出来。所以也许你的TFS中有一个过时的任务代码。

我刚刚检查了我的前提TFS 2015.它无法解析3号码版本。

+0

我使用TFS 2015年更新3。 – Antebios

1

我找到了解决办法:

1)你需要让你的生成代理机

2)导航到安装生成代理那里获得。 对我来说 - > C:\ BuildAgent \ tasks \ NuGetPackager

3)你会看到文件夹的版本,所以进入最新的版本。

4)修改PowerShell脚本,NuGetPackager.ps1

Find --> $VersionRegex = "\d+.\d+.\d+.\d+"

And replace with --> $VersionRegex = "\d+.\d+.\d+.\d+|\d+.\d+.\d+"

5)然后保存脚本。

我在做的是修改正则表达式来说“在内部编号字符串中搜索模式#。#。#。#OR#。#。#”。而之前它只是在寻找“#。#。#。#”。

现在,当你完成你的构建,在TFS生成代理就能解析生成版本:

Set workingFolder to default: C:\BuildAgent\tasks\NuGetPackager\0.1.58

Executing the powershell script: C:\BuildAgent\tasks\NuGetPackager\0.1.58\NuGetPackager.ps1

Getting version number from build

BUILD_BUILDNUMBER: Planning.Domain.Library-CI_1.0.7

Version: 1.0.7

相关问题