2017-02-12 788 views
3

使用MSBuild 15和Microsoft.NET.Sdk构建项目允许用户指定六种版本属性。这两者之间的区别是什么?使用它们的正确方式是什么?各种MSBuild版本属性(如Version,VersionPrefix和VersionSuffix)之间的区别是什么?

  • 版本
  • VersionPrefix
  • VersionSuffix
  • 的AssemblyVersion
  • 文件版本
  • PackageVersion

而且要清楚,我说的是 “性” 作为MSBuild的性质在文件中定义(如下)

<PropertyGroup> 
    <Version>1.2.0</Version> 
</PropertyGroup> 

...或命令行msbuild.exe /p:Version=1.2.0

回答

6

此外,设置这些值显式地将覆盖默认值。

VersionPrefix

格式: major.minor.patch

实例: 14.2.4,0.1.0,99.99.99

含义:正常部的semver版本号。这用于确定版本值的开始。

默认值: “1.0.0”

VersionSuffix

格式:[0-9A-ZA-Z - ] *(任意字符串)

实例 :alpha,beta,build0123,rc4-build201701

M倾斜:版本号的预发布标签。用于确定版本值的结尾。

默认:(空)

格式: major.minor.patch [-PRERELEASE]

实例:5.3.9-β,0.0 .1-alpha-01,2.0。0

含义:此属性是用户项目中最常用的属性。其他版本属性将该值视为默认值。它也用于生成值System.Reflection.AssemblyInformationalVersionAttribute。预售价值是可选的。

默认:VersionPrefix如果VersionSuffix为空。 VersionPrefix-VersionSuffix if VersionSuffix is not empty。

注:设置版本明确将覆盖任何VersionPrefixVersionSuffix设置。

另外,这通常遵循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值。该属性可以包含任何其他版本信息。

默认:匹配版本

+0

这是伟大的。出于好奇,我会在微软的文档中找到这个地方? –

+0

我不认为有这方面的官方文档。 – natemcmaster

相关问题