2017-02-12 792 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

相關問題