Skip to content

Instantly share code, notes, and snippets.

@mamift
Last active February 7, 2020 03:06
Show Gist options
  • Save mamift/cf7f73e778528b0c103c6f7ccde37618 to your computer and use it in GitHub Desktop.
Save mamift/cf7f73e778528b0c103c6f7ccde37618 to your computer and use it in GitHub Desktop.
Increments the last digit of the nuget version number for a given .csproj file. Intended for the VS2017 project file format and newer.
param(
[parameter(Mandatory=$True)]
[string] $csprojFile
)
# to invoke from visual studio as a post-build event:
# C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command incrementNugetPackageBuildNumber.ps1 -csprojFile "$(ProjectPath)";
$projXml = new-object xml
$projXml.Load($csprojFile)
[string]$versionNumberString = $projXml.Project.PropertyGroup.Version
[string[]]$versionNumberComponents = $versionNumberString.Split('.')
$buildNumberString = $versionNumberComponents[$versionNumberComponents.Length-1]
[int]$buildNumber = [System.Int32]::Parse($buildNumberString)
$versionNumberComponents[$versionNumberComponents.Length-1] = ($buildNumber++)
[string]$incrementedVersionNumber = ""
for ($i = 0; $i -lt ($versionNumberComponents.Length); $i++) {
$component = $versionNumberComponents[$i]
Write-Output $component
if ($i -ne ($versionNumberComponents.Length-1)) {
$incrementedVersionNumber = $incrementedVersionNumber + "$component"
$incrementedVersionNumber = $incrementedVersionNumber + "."
} else { #at the last index
$incrementedVersionNumber = $incrementedVersionNumber + "$buildNumber"
}
}
$projXml.Project.PropertyGroup.Version = $incrementedVersionNumber
$projXml.Save($csprojFile)
Write-Host "New version number: $incrementedVersionNumber"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment