2017-09-08 8 views
0

私はmsbuildでnuget-packagesを作成するためにbambooを使用しています。私はいつも、gitのコードをコミットする前に、手動でnuget-package-versionをバンプする必要があります。ビルド番号をnuget-package-versionとして使用

これで、nuget-packageのバージョンとしてbambooのビルド番号を使用したいと考えています。

nuget-package-versionをコマンドラインツールで変更できますか?

答えて

0

はい、Powershellを使用できます。私はスクリプトをテストしていないが、それは仕事をする必要があります。 nuspecのバージョン番号を$ version $として定義し、ビルド時にそれを更新する必要があります。この方法で、他の情報も更新することができます。

function Update-NuspecVersion { 
[CmdletBinding()] 
param(
    [Parameter()] 
    [string]$RootFolder = $(throw "Repo folder is mandatory, please provide a value."), 

    [Parameter()] 
    [int]$BuildNumber 
) 

$Nuspecs = Get-ChildItem -Path $RootFolder -Recurse -Filter *.nuspec | Where-Object { $_.FullName -notlike "*\obj\*"} 
Foreach ($Nuspec in $Nuspecs) { 
    $nuspecfile = [xml]$(Get-Content $Nuspec.FullName) 
    $PackageVersion = $([xml]$(Get-Content $Nuspec.FullName) | % package).metadata.version 
    if ($PackageVersion -eq '$version$') { 
     $Assembly = get-childitem $nuspec.Directory -Recurse -Filter "AssemblyInfo.Version.cs" 
     if ($Assembly.Count -eq 0) { 
      $Assembly = get-childitem $nuspec.Directory -Recurse -Filter "AssemblyInfo.cs" 
     } 
     $PackageVersion = $(Get-content $Assembly.FullName | ForEach-Object { $_ -replace '\/\/.+', ""; } | Select-String "AssemblyVersion").ToString().Split('"')[1] 
    } 

    $PackageVersionObject=[version]$PackageVersion 
    if ($Branch.Type -eq "develop") { 
     $PackageVersion ="{0}.{1}.{2}-{3}-{4}" -f $PackageVersionObject.major, $PackageVersionObject.Minor, $BuildNumber, $Branch.Type, ("{0:D4}" -f $BuildNumber) 
    } 
    else { 
     $PackageVersion ="{0}.{1}.{2}" -f $PackageVersionObject.major, $PackageVersionObject.Minor, $BuildNumber 
    } 

    $nuspecfile.package.metadata.version = $PackageVersion 
    $nuspecfile.Save($Nuspec.FullName) 
} 
} 
関連する問題