2016-08-31 6 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.ps1:

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 номера части сборки пришли из этой фиксации: https://github.com/Microsoft/vsts-tasks/commit/233c112bc06b91964a559090b8acfd4452cdec0b

Перед этим совершать регулярные expresion просто \d+\.\d+\.\d+\.\d+. Возможно, у вас есть устаревший код задачи в вашей TFS.

Я только что проверил свой локальный терминал TFS 2015. Он не может разобрать 3-разрядную версию.

+0

Я использую TFS 2015 Update 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), а затем сохранить сценарий.

Что я делаю, это изменение регулярного выражения, чтобы сказать «Найти шаблон #. #. #. # ИЛИ #. #. # В строке строкового номера». Если раньше он искал только «#. #. #. #».

Теперь, когда вы делаете вашу сборку, то 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