Общие сведения о версионировании в .NET

Новые функции в среде выполнения и пакете SDK для .NET добавляются с различной частотой. Как правило, пакет SDK обновляется чаще, чем среда выполнения. В этой статье приводятся сведения о нумерации версий среды выполнения и пакета SDK.

Новый выпуск .NET с основным номером версии выходит ежегодно в ноябре. Выпуски с четным номером версии, например .NET 6 или .NET 8, получают долгосрочную поддержку (являются выпусками LTS). Выпуски с нечетными номерами поддерживаются до выхода следующего выпуска с основным номером версии. Последним выпуском .NET является .NET 6.

Сведения об управлении версиями

Для среды выполнения .NET используется формат версий "основной_номер.дополнительный_номер.номер_исправления", соответствующий семантическому версионированию.

Однако пакет SDK для .NET не соблюдает семантическое версионирование. Новые версии пакета SDK для .NET выпускаются чаще, а их номера версий должны отражать как версию соответствующей среды выполнения, так и собственный дополнительный номер версии и номер исправления пакета SDK.

Первые две позиции в номере версии пакета SDK для .NET соответствуют версии среды выполнения .NET, с которой выпускается этот пакет. Каждая версия пакета SDK позволяет создавать приложения для этой среды выполнения и любых ее предыдущих версий.

Третья позиция номера версии пакета SDK сообщает дополнительный номер версии и номер исправления. Дополнительный номер версии умножается на 100. Последние две цифры означают номер исправления. Дополнительный номер версии 1 и номер версии исправления 2 будут представлены как "102". Например, ниже приведена возможная последовательность номеров версий среды выполнения и пакета SDK:

Change Среда выполнения .NET ПАКЕТ SDK ДЛЯ .NET (*)
Начальный выпуск 5.0.0 5.0.100
Исправление для пакета SDK 5.0.0 5.0.101
Среда выполнения и исправление для пакета SDK 5.0.1 5.0.102
Изменение функций пакета SDK 5.0.1 5.0.200

Примечания:

  • Если до обновления компонентов среды выполнения выходит 10 обновлений компонентов пакета SDK, номера версий переходят на числа от 1000. Например, за выпуском 5.0.900 следует версия с номером 5.0.1000. Такая ситуация является маловероятной.
  • То есть 99 выпусков исправлений без выпуска компонентов не произойдет. Если версия выпуска приближается к такому номеру, неизбежно выходит выпуск компонентов.

Дополнительные сведения см. в начальном предложении в репозитории dotnet/designs.

Семантическое версионирование

Среда выполнения .NET примерно соответствует семантике (SemVer), принимая использование управления версиями, используя различные части номера версии для описания степени и типа изменения.

MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]

Необязательные части PRERELEASE и BUILDNUMBER никогда не используются в поддерживаемых выпусках и применяются только для ночных сборок, локальных сборок, которые создаются из исходных целевых объектов, и неподдерживаемых предварительных выпусков.

Общие сведения об изменениях номера версии среды выполнения

  • Версия MAJOR с более высоким номером выходит раз в год и может включать следующее.

    • Значительные изменения или новое направление развития продукта.
    • Внедрение критических изменений в API. Для принятия критических изменений действует высокая планка.
    • Присваивается более новая версия MAJOR существующей зависимости.

    Основные выпуски выходят раз в год, а версии с четными номерами являются выпусками с долгосрочной поддержкой (LTS). Первый выпуск LTS, использующий эту схему управления версиями, — это .NET 6. Последняя версия, не относящаяся к LTS, — это .NET 5.

  • MINOR увеличивается в следующих случаях:

    • Добавляется контактная зона общедоступного API.
    • Добавляется новое поведение.
    • Присваивается более новая версия MINOR существующей зависимости.
    • Добавляется новая зависимость.
  • PATCH увеличивается в следующих случаях:

    • Вносятся исправления ошибок.
    • Добавляется поддержка новой платформы.
    • Присваивается более новая версия PATCH существующей зависимости.
    • Вносятся другие изменения, которые не относятся к описанным выше случаям.

При наличии нескольких изменений увеличивается самый высокий элемент, затронутый отдельными изменениями, а следующие за ним сбрасываются до нуля. Например, при повышении номера версии MAJOR номера MINOR.PATCH сбрасываются до нуля. Когда повышается номер MINOR, номер PATCH сбрасывается до нуля, а MAJOR остается неизменным.

Номера версий в именах файлов

Файлы, скачанные для .NET, имеют версию, например: dotnet-sdk-5.0.301-win10-x64.exe.

Предварительные версии

Для предварительных версий к номеру версии добавляется -preview.[number].[build]. Например, 6.0.0-preview.5.21302.13.

Сервисные версии

После выхода выпуска его ветви обычно перестают создавать ежедневные сборки и вместо них начинают формировать сервисные сборки. Для сервисных версий к номеру версии добавляется -servicing-[number]. Например, 5.0.1-servicing-006924.

См. также