各种MSBuild版本属性(例如Version,VersionPrefix和VersionSuffix)之间有什么区别?
使用MSBuild 15和Microsoft.NET.Sdk构建项目允许用户指定六个版本属性。 它们之间的区别是什么,使用它们的正确方法是什么?
- 版
- VersionPrefix
- VersionSuffix
- 的AssemblyVersion
- 文件版本
- PackageVersion
为了清楚起见,我在谈论“属性”作为文件中定义的MSBuild属性(如下所示)
1.2.0
…或命令行为msbuild.exe /p:Version=1.2.0
此外,显式设置这些值将覆盖默认值。
VersionPrefix
格式: major.minor.patch
例子: 14.2.4,0.1.0,99.99.99
含义 :semver版本号的正常部分。 这用于确定Version值的开头。
默认值: “1.0.0”
VersionSuffix
格式 :[0-9A-Za-z – ] *(任意字符串)
示例 :alpha,beta,build0123,rc4-build201701
含义 :版本号的预发布标签。 用于确定Version值的结尾。
默认值 :(空)
版
格式: major.minor.patch [-prerelease]
实例 :5.3.9-β,0.0.1-α-01,2.0.0
含义 :此属性是用户项目中最常用的属性。 其他版本属性将此值视为默认值。 它还用于生成System.Reflection.AssemblyInformationalVersionAttribute
的值。 预发布值是可选的。
默认值:如果VersionSuffix为空, 则为VersionPrefix 。 如果VersionSuffix 不为空, 则为VersionPrefix-VersionSuffix 。
注意:显式设置版本将覆盖任何VersionPrefix或VersionSuffix设置。
此外,这通常遵循SemVer 1.0.0规则。 请参见http://semver.org/spec/v1.0.0.html 。
PackageVersion
格式: major.minor.patch [-prerelease]
含义:用于在从MSBuild项目生成NuGet包时生成包版本。
默认值 :匹配版本
的AssemblyVersion
格式: major.minor.patch.revision
示例: 4.5.6.2,1.0.0.0
含义:用于生成System.Reflection.AssemblyVersionAttribute
的值。 编译器使用它来确定最终的AssemblyVersion值,这是程序集标识的一个重要部分。 请参阅https://msdn.microsoft.com/en-us/library/51ket42z(v=vs.110).aspx#Anchor_0
默认值 :匹配没有预发布标签的版本。
文件版本
格式化 major.minor.patch.buildnumber
示例 :1.0.0.43952,0.1.0.0
含义 :用于生成System.Reflection.AssemblyFileVersionAttribute
的值。 这与AssemblyVersion不匹配。 通常会在此版本中添加内部版本号。
默认值 :匹配AssemblyVersion
InformationalVersion
格式 :任何
含义 :用于生成System.Reflection.AssemblyInformationalVersionAttribute
的值。 此属性可以包含任何其他版本信息。
默认值 :匹配版本