Skip to content

Instantly share code, notes, and snippets.

@jonlabelle
Last active October 11, 2024 05:44
Show Gist options
  • Save jonlabelle/34993ee032c26420a0943b1c9d106cdc to your computer and use it in GitHub Desktop.
Save jonlabelle/34993ee032c26420a0943b1c9d106cdc to your computer and use it in GitHub Desktop.
MSBuild Version Properties Cheatsheet
title author date source snippet gist
MSBuild Version Properties Cheatsheet
natemcmaster
September 18, 2019

Based on Stack Overflow question/answer, Building projects with MSBuild 15 and Microsoft.NET.Sdk allows users to specify half a dozen version properties. What is the difference between each of these and what is the right way to use them?

VersionPrefix

  • Format: major.minor.patch
  • Examples: 14.2.4, 0.1.0, 99.99.99
  • Meaning: The normal part of the semver version number. This is used to determine the beginning of the Version value.
  • Default: 1.0.0

VersionSuffix

  • Format: [0-9A-Za-z-.]* (arbitrary string)
  • Examples: alpha, beta, build0123, rc4-build201701, rc.1, rc-1
  • Meaning: The pre-release label of the version number. Used to determine the ending of a Version value.
  • Default: (empty)

Version

  • Format: major.minor.patch[-prerelease]
  • Examples: 5.3.9-beta, 0.0.1-alpha-01, 0.0.1-alpha.1, 2.0.0
  • Meaning: This property is the most commonly used property in user projects. Other version properties look to this value as a default. It is also used to generate the value of System.Reflection.AssemblyInformationalVersionAttribute. The prerelease value is optional.
  • Default: VersionPrefix if VersionSuffix is empty. VersionPrefix-VersionSuffix if VersionSuffix is not empty.

NOTE: setting Version explicitly will override any VersionPrefix or VersionSuffix settings.

Also, this typically follows SemVer rules.

PackageVersion

  • Format: major.minor.patch[-prerelease]
  • Meaning: Used to generate the package version when producing a NuGet package from an MSBuild project.
  • Default: matches Version

AssemblyVersion

FileVersion

  • Format: major.minor.patch.buildnumber
  • Examples: 1.0.0.43952, 0.1.0.0
  • Meaning: Used to generate the value of System.Reflection.AssemblyFileVersionAttribute. This is not required to match AssemblyVersion. It is common to add a build number to this version.
  • Default: matches AssemblyVersion

InformationalVersion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment