2017-09-08 2 views
0

J'utilise bamboo pour créer des paquets nuget avec msbuild. Actuellement, je dois toujours passer à la main la version nuget-package avant de transmettre le code à git (où il sera automatiquement construit).Utiliser build-number comme nuget-package-version

Je veux maintenant utiliser le numéro de build de bamboo comme version pour le paquet nuget. Est-ce que je peux changer la version de paquet-nuget avec un outil de ligne de commande?

Répondre

0

Oui, vous pouvez utiliser Powershell. Je n'ai pas testé le script, mais cela devrait faire l'affaire. Vous devez définir le numéro de version dans votre nuspec comme $ version $, puis le mettre à jour lors de la construction. De cette façon, vous pourrez également mettre à jour d'autres informations.

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) 
} 
}