Visão geral de como é feito o controle de versão do .NET

O Runtime do .NET e o SDK do .NET adicionam novos recursos em frequências diferentes. Em geral, o SDK é atualizado com mais frequência do que o Runtime. Este artigo explica os números de versão do SDK e do runtime.

O .NET lança uma nova versão principal todo mês de novembro. Versões com numeração par, como .NET 6 ou .NET 8, têm suporte de longo prazo (LTS). Versões com numeração ímpar possuem suporte até a próxima versão principal. A versão mais recente do .NET é o .NET 6.

Detalhes de controle de versão

O Runtime do .NET Core tem uma abordagem principal.secundária.patch para o controle de versão que segue o controle de versão semântico.

No entanto, o SDK do .NET não segue o controle de versão semântico. As versões do SDK do .NET são liberadas mais rapidamente e seus números de versão devem comunicar tanto o runtime alinhado quanto as versões de patch e a própria versão secundária do SDK.

As duas primeiras posições do número de versão do SDK do .NET correspondem à versão do Runtime do .NET com a qual ele foi lançado. Cada versão do SDK pode criar aplicativos para esse runtime ou qualquer versão inferior.

A terceira posição do número de versão do SDK comunica o número de patch e da versão secundária. A versão secundária é multiplicada por 100. Os últimos dois dígitos representam o número de patch. Versão secundária 1, versão de patch 2 seria representada como 102. Por exemplo, aqui está uma possível sequência de números de versão do runtime e do SDK:

Alterar Execução do .NET SDK do .NET (*)
Versão inicial 5.0.0 5.0.100
Patch do SDK 5.0.0 5.0.101
Runtime e Patch do SDK 5.0.1 5.0.102
Alteração de Recurso do SDK 5.0.1 5.0.200

OBSERVAÇÕES:

  • Se o SDK tiver 10 atualizações de recursos antes da atualização de um recurso de runtime, os números de versão são inseridos na série 1000. A versão 5.0.1000 seguiria a versão 5.0.900. Essa situação não deve ocorrer.
  • As versões de patch 99 sem uma versão do recurso não ocorrerão. Se uma versão se aproximar desse número, ela forçará uma versão do recurso.

Você poderá ver mais detalhes na proposta inicial no repositório dotnet/designs.

Controle de versão semântico

O Runtime do .NET se adere ao SemVer (Controle de Versão Semântico), adotando o uso do controle de versão do MAJOR.MINOR.PATCH, usando as várias partes do número de versão para descrever o grau e o tipo de alteração.

MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]

As partes PRERELEASE e BUILDNUMBER opcionais nunca farão parte das versões compatíveis e existem apenas em builds noturnos, compilados localmente de destinos de origem e versões prévias sem suporte.

Entender as alterações do número de versão do runtime

  • MAJOR é incrementado uma vez por ano e pode conter:

    • Alterações significativas no produto ou uma nova direção de produto.
    • A API introduziu alterações interruptivas. Há um alto padrão para aceitar alterações interruptivas.
    • Uma versão MAJOR mais nova de uma dependência existente é adotada.

    As principais versões ocorrem uma vez por ano, versões com numeração par são versões LTS (com suporte de longo prazo). A primeira versão LTS usando esse esquema de controle de versão é o .NET 6. A versão mais recente não LTS é o .NET 5.

  • MINOR é incrementado quando:

    • Uma área de superfície de API pública é adicionada.
    • Um novo comportamento é adicionado.
    • Uma versão MINOR mais nova de uma dependência existente é adotada.
    • Uma nova dependência é introduzida.
  • PATCH é incrementado quando:

    • Correções de bug são feitas.
    • O suporte para uma plataforma mais recente é adicionado.
    • Uma versão PATCH mais nova de uma dependência existente é adotada.
    • Qualquer outra alteração que não se enquadre em um dos casos anteriores.

Quando há várias alterações, o elemento mais alto afetado por alterações individuais é incrementado e os seguintes são redefinidos como zero. Por exemplo, quando MAJOR é incrementado, MINOR.PATCH são redefinidos como zero. Quando MINOR é incrementado, PATCH é redefinido como zero enquanto MAJOR permanece inalterado.

Números de versão nos nomes de arquivo

Os arquivos baixados para .NET carregam a versão, por exemplo, dotnet-sdk-5.0.301-win10-x64.exe.

Versões prévias

As versões prévias têm um -preview.[number].[build] anexado ao número de versão. Por exemplo, 6.0.0-preview.5.21302.13.

Versões de manutenção

Depois que uma versão sai, os branches de versão geralmente param de produzir builds diários e, em vez disso, iniciam a produção de builds de manutenção. As versões de manutenção têm um -servicing-[number] anexado à versão. Por exemplo, 5.0.1-servicing-006924.

Confira também