Преобразуйте строку в int и увеличивайте последнюю цифру только для номера сборки в TFS. - PullRequest
1 голос
/ 26 марта 2019

Я ищу способ преобразования строки 1.2.0 в int, чтобы я мог увеличивать последнюю цифру.Окончательный результат должен быть 1.2.1

$values = '1.2.0'

$after = $values.split('.');

$result = [int]$after;

# TODO increment the last decimal value, result should be 1.2.3

$result

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Удивительно, что тип System.Version не поддерживает методы приращения компонентов номера версии (как и тип PowerShell Core-only System.Management.Automation.SemanticVersion). ).

Вот решение для PSv5 +:

$versionString = '1.2.0'

$version = [version] $versionString

$versionStringIncremented = [string] [version]::new(
  $version.Major,
  $version.Minor,
  $version.Build + 1
)

# $versionStringIncremented now contains '1.2.1'

Если вы хотите обернуть это в функцию , которая позволяет увеличивать любой из компонентов , устанавливая все нижние компоненты на 0 или, в случае .Revision, на неопределенное значение (сообщается как -1):

function Increment-Version {
  param(
    [Parameter(Mandatory)]
    [version] $Version
    ,
    [ValidateSet('Major', 'Minor', 'Build', 'Revision')]
    [string] $Component = 'Revision'
  )

  $useRevision = $Version.Revision -ne -1 -or $Component -eq 'Revision'

  $Major, $Minor, $Build, $Revision =
    $Version.Major, $Version.Minor, $Version.Build, $Version.Revision

  switch ($Component) {
    'Major' { $Minor = $Build = 0 }
    'Minor' { $Build = 0 }
  }

  Set-Variable $Component (1 + (Get-Variable -ValueOnly $Component))

  if ($useRevision) {
    [version]::new(
      $Major,
      $Minor,
      $Build,
      $Revision
    )
  } else {
    [version]::new(
      $Major,
      $Minor,
      $Build
    )
  }

}

Тогда ваша команда упростится до:

# -> '1.2.1'
$versionStringIncremented = [string] (Increment-Version 1.2.0 -Component Build)

# -> '1.3.0'
$versionStringIncremented = [string] (Increment-Version 1.2.7 -Component Minor)
0 голосов
/ 26 марта 2019

Этот небольшой фрагмент был способом просто выяснить, как увеличить последнюю цифру моего номера сборки, когда я вызываю строку json, используя tfs api.

Я нашел решение, я пытался автоматизировать мой номер версии сборки TFS для увеличения после каждой сборки во время моей задачи сборки.Я создам переменные для номеров версий моей сборки и следую этому методу.

Я использовал эти руководства для создания своего скрипта:

https://platform.deloitte.com.au/articles/how-to-automate-incrementing-project-build-numbers-in-vsts

http://devbraino.com/2017/09/25/auto-package-vsts-custom-build-task/

$first = '1'
$second = '2'
$third = '0'

$currentVersion = "$($first).$($second).$($third)"

$third = "$([System.Convert]::ToInt32($third) + 1)"
[string]$newVersionNumber = "$($first).$($second).$($third)"

$newVersionNumber
...