В чем разница между различными свойствами версии MSBuild, такими как Version, VersionPrefix и VersionSuffix?

Создание проектов с помощью MSBuild 15 и Microsoft.NET.Sdk позволяет пользователям указывать полдюжины свойств версии. В чем разница между каждым из них и каким правильным способом их использовать?

  • Версия
  • VersionPrefix
  • VersionSuffix
  • AssemblyVersion
  • FileVersion
  • PackageVersion

И чтобы быть ясным, я говорю о свойствах как свойства MSBuild, которые определены в файле (как показано ниже)

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

... или в командной строке как msbuild.exe/p:Version=1.2.0

Ответы

Ответ 1

Кроме того, установка этих значений явно переопределит значения по умолчанию.

VersionPrefix

Формат: major.minor.patch

Примеры: 14.2.4, 0.1.0, 99.99.99

Значение: нормальная часть номера версии semver. Это используется для определения начала значения версии.

По умолчанию: "1.0.0"

VersionSuffix

Формат: [0-9A-Za-z -.] * (Произвольная строка)

Примеры: альфа, бета, build0123, rc4-build201701, rc.1, rc-1

Значение: предварительная метка номера версии. Используется для определения окончания значения версии.

По умолчанию: (пусто)

Версия

Формат: major.minor.patch [-prerelease]

Примеры: 5.3.9-бета, 0.0.1-alpha-01, 0.0.1-alpha.1, 2.0.0

Значение: это свойство является наиболее часто используемым свойством в пользовательских проектах. Другие свойства версии смотрят на это значение по умолчанию. Он также используется для генерации значения System.Reflection.AssemblyInformationalVersionAttribute. Значение для предварительного выпуска является необязательным.

По умолчанию: VersionPrefix, если VersionSuffix пуст. VersionPrefix-VersionSuffix, если VersionSuffix не пустой.

Примечание. Настройка версии явно переопределит любые настройки VersionPrefix или VersionSuffix.

Кроме того, это обычно следует правилам SemVer. Подробнее смотрите http://semver.org/ for details

PackageVersion

Формат: major.minor.patch [-prerelease]

Значение: используется для создания версии пакета при создании пакета NuGet из проекта MSBuild.

По умолчанию: соответствует версии

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

По умолчанию: соответствует версии без предварительной метки.

FileVersion

Формат major.minor.patch.buildnumber

Примеры: 1.0.0.43952, 0.1.0.0

Значение: используется для генерации значения System.Reflection.AssemblyFileVersionAttribute. Это не обязательно для соответствия AssemblyVersion. Обычно в эту версию добавляют номер сборки.

По умолчанию: соответствует AssemblyVersion

InformationalVersion

Формат: любой

Значение: используется для генерации значения System.Reflection.AssemblyInformationalVersionAttribute. Этот атрибут может содержать любую дополнительную информацию о версии.

По умолчанию: соответствует версии