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?
- 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
- 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)
- 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.
- Format:
major.minor.patch[-prerelease]
- Meaning: Used to generate the package version when producing a NuGet package from an MSBuild project.
- Default: matches Version
- Format:
major.minor.patch.revision
- Examples:
4.5.6.2
,1.0.0.0
- Meaning: Used to generate the value of System.Reflection.AssemblyVersionAttribute. The compiler uses this to determine the final AssemblyVersion value, an essential part of assembly identity. See https://docs.microsoft.com/dotnet/standard/assembly/versioning for more information.
- Default: matches Version without the prerelease label.
- 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
- Format: any
- Meaning: Used to generate the value of System.Reflection.AssemblyInformationalVersionAttribute. This attribute can contain any additional version information.
- Default: matches Version