.NET 8 e .NET 9 chegam ao fim do suporte em novembro de 2026

O fim do suporte do .NET 8 e do .NET 9 acontece em 10 de novembro de 2026, conforme o comunicado que a Microsoft publicou no .NET Blog em 29 de junho de 2026. Pela primeira vez, uma versão LTS e uma versão STS encerram o ciclo de vida exatamente no mesmo dia, o que cria uma janela de migração única para todo o ecossistema.

O que é o ciclo de vida do .NET

O .NET moderno segue a política de ciclo de vida moderno da Microsoft. Esse modelo é diferente do ciclo fixo do .NET Framework, que acompanha o suporte do próprio Windows.

Na prática, o modelo moderno é orientado a serviços. Por isso, ele trabalha com períodos de suporte mais curtos e lançamentos anuais, refletindo a evolução contínua da plataforma.

LTS e STS na política de suporte

Existem dois tipos de lançamento. O LTS (Long Term Support) recebe 36 meses de suporte, enquanto o STS (Standard Term Support) passou a receber 24 meses.

Antes da mudança anunciada em 2024, o STS tinha apenas 18 meses de cobertura. Além disso, os lançamentos alternam todo mês de novembro: versões pares viram LTS e versões ímpares viram STS.

Durante o período de suporte, a Microsoft publica atualizações de manutenção mensais. Depois do fim do suporte do .NET 8, essas atualizações simplesmente param de chegar para essa versão.

Assim, apenas o patch mais recente de cada versão é considerado suportado, então instalar as atualizações faz parte do contrato.

Por que o fim do suporte do .NET 8 coincide com o do .NET 9

O .NET 8 chegou em 14 de novembro de 2023 como LTS. Portanto, seus 36 meses terminam em novembro de 2026.

Por ser uma versão de suporte estendido, ele virou o padrão de muitas equipes que precisam de estabilidade. Em outras palavras, o fim do suporte do .NET 8 afeta uma parcela enorme das aplicações em produção hoje.

O .NET 9, por sua vez, saiu em 12 de novembro de 2024 como STS. Como ele já nasceu sob a nova regra de 24 meses, seu encerramento também caiu em novembro de 2026.

Com isso, as duas datas se alinharam. De fato, o fim do suporte do .NET 8 e o do .NET 9 acontecem no mesmo Patch Tuesday, e equipes nas duas versões precisam migrar ao mesmo tempo.

O que acontece após o fim do suporte do .NET 8

Do ponto de vista técnico, nada quebra no dia seguinte. As aplicações construídas com .NET 8 ou .NET 9 continuam executando normalmente.

No entanto, a Microsoft deixa de publicar atualizações de segurança, correções de bugs e suporte técnico para essas versões. Ou seja, qualquer vulnerabilidade descoberta depois dessa data não recebe correção.

Além disso, os canais oficiais deixam de ajudar no diagnóstico de problemas dessas versões. Por isso, o fim do suporte do .NET 8 também significa perder o apoio formal em incidentes.

Existe ainda um detalhe de calendário. Como 10 de novembro de 2026 é um Patch Tuesday, cada versão pode receber uma última atualização nesse mesmo dia, caso exista algum problema crítico conhecido.

Riscos de permanecer após o fim do suporte do .NET 8

O risco mais evidente é a segurança. Uma falha pública em uma biblioteca do runtime continua aberta para sempre nas aplicações que ficarem para trás.

Também existem riscos de conformidade. Muitas auditorias exigem que o software rode em versões suportadas, então o fim do suporte do .NET 8 pode virar um apontamento formal.

Por fim, o ecossistema segue em frente. Pacotes NuGet, imagens de contêiner e ferramentas passam a priorizar versões suportadas, e manter o código parado fica cada vez mais caro.

Impacto do fim do suporte do .NET 8 no Visual Studio

A Microsoft informou que uma futura atualização de serviço do Visual Studio 2022 vai marcar os componentes do .NET 8 e do .NET 9 como fora de suporte.

As instalações existentes não mudam automaticamente. Contudo, o instalador passa a sinalizar esses componentes, e o desenvolvedor pode usar a opção de remover componentes fora de suporte.

Para continuar com suporte total na IDE, a orientação é redirecionar os projetos para o .NET 10 ou para uma versão posterior.

Como verificar se você será afetado

Antes de planejar qualquer coisa, descubra quais versões existem no seu ambiente. A CLI do .NET oferece comandos simples para isso.

# Lista os SDKs instalados na máquina
dotnet --list-sdks

# Lista os runtimes instalados (Microsoft.NETCore.App, Microsoft.AspNetCore.App etc.)
dotnet --list-runtimes

# Compara as versões instaladas com as versões mais recentes e suportadas
dotnet sdk check

O comando dotnet sdk check é especialmente útil. Ele indica quais SDKs e runtimes têm atualização disponível e quais estão perto do fim do suporte.

Em seguida, procure nos repositórios os arquivos .csproj que ainda apontam para net8.0 ou net9.0. Também revise os Dockerfile que usam as tags 8.0 ou 9.0 das imagens oficiais.

Com esse inventário em mãos, fica claro o tamanho do impacto do fim do suporte do .NET 8 na sua organização. Assim, a equipe consegue estimar prazos com base em dados, e não em suposições.

Conhecendo o .NET 10, a versão recomendada

O .NET 10 saiu em 11 de novembro de 2025 como a nova LTS, com suporte até novembro de 2028. Dessa forma, ele é o destino natural para quem enfrenta o fim do suporte do .NET 8.

A versão traz melhorias de desempenho no runtime, novidades na BCL e evoluções no ASP.NET Core 10 e no Entity Framework Core 10. Um exemplo é o pruning de pacotes do NuGet, explicado no artigo sobre package pruning no .NET 10.

Além disso, migrar para o .NET 10 garante correções de segurança mensais durante todo o ciclo. Assim, a equipe ganha dois anos de tranquilidade antes da próxima migração obrigatória.

Como migrar antes do fim do suporte do .NET 8

Em muitos cenários, a migração do .NET 8 ou do .NET 9 para o .NET 10 é direta. O ponto de partida é o arquivo de projeto.

Primeiro, altere a propriedade TargetFramework no .csproj de net8.0 ou net9.0 para net10.0:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <!-- Antes: net8.0 ou net9.0 -->
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
</Project>

Em seguida, atualize as referências de pacotes da Microsoft, como Microsoft.AspNetCore.* e Microsoft.EntityFrameworkCore.*, para as versões 10.x.

Depois, instale o SDK do .NET 10 nas máquinas dos desenvolvedores, nos agentes de CI e nos servidores de hospedagem. Se o repositório usa um global.json, atualize também a versão fixada nele:

{
  "sdk": {
    "version": "10.0.100",
    "rollForward": "latestFeature"
  }
}

Vale lembrar que a migração entre versões do .NET moderno é bem mais simples do que sair do .NET Framework. Afinal, a plataforma mantém alta compatibilidade entre versões consecutivas.

Quebrando mudanças no .NET 10

Embora a migração costume ser tranquila, existem breaking changes que precisam de análise antes de chegar à produção. Por isso, reserve tempo para essa revisão bem antes do fim do suporte do .NET 8.

A Microsoft mantém a lista completa na página de breaking changes do .NET 10.

ASP.NET Core 10

O método WithOpenApi passou a ser obsoleto e gera o diagnóstico ASPDEPR002. Nesse caso, a alternativa é usar AddOpenApiOperationTransformer:

// Antes: .WithOpenApi(operation => { ... })
app.MapGet("/orders", () => Results.Ok())
   .AddOpenApiOperationTransformer((operation, context, cancellationToken) =>
   {
       // Ajustes do documento OpenAPI por endpoint
       operation.Summary = "Lists all orders.";
       return Task.CompletedTask;
   });

Além disso, WebHostBuilder, IWebHost e WebHost ficaram obsoletos. Outra mudança relevante afeta a autenticação por cookies: endpoints de API conhecidos agora devolvem 401 e 403 em vez de redirecionar para a página de login.

SDK, NuGet e bibliotecas

No SDK, um PackageReference sem versão agora gera o erro NU1015, e não mais um aviso. Também o comando dotnet nuget sign deixou de aceitar impressões digitais SHA-1.

Nas bibliotecas centrais, o tipo System.Linq.AsyncEnumerable passou a fazer parte do framework. Nesse sentido, projetos que referenciam o pacote System.Linq.Async podem enfrentar conflitos e precisam remover ou atualizar essa referência.

Já nos contêineres, as tags padrão das imagens do .NET 10 apontam para Ubuntu, e não mais para Debian. Portanto, teste a aplicação com a nova imagem antes de publicar, especialmente se você gera contêineres sem Dockerfile.

Ferramentas para lidar com o fim do suporte do .NET 8

Durante anos, o .NET Upgrade Assistant foi a ferramenta oficial de migração. No entanto, a Microsoft o declarou oficialmente obsoleto.

O substituto é o agente GitHub Copilot app modernization, incluído no Visual Studio 2026 e no Visual Studio 2022 a partir da versão 17.14.16. Ele também está disponível no Visual Studio Code e na GitHub CLI.

O agente trabalha em três etapas. Primeiro avalia o projeto e as dependências, depois gera um plano de migração e, por fim, aplica as correções em commits rastreáveis.

Para quem não tem acesso ao GitHub Copilot, o Upgrade Assistant ainda funciona como opção legada nas configurações do Visual Studio. O artigo sobre upgrade de aplicações legadas com GitHub Copilot mostra esse fluxo na prática.

Detectando SDKs fora de suporte no build

Outra ajuda vem do MSBuild. A propriedade CheckSdkVulnerabilities, disponível a partir do SDK do .NET 11 Preview 5, faz o build avisar quando o SDK em uso não tem mais suporte:

<PropertyGroup>
  <!-- Emite NETSDK1239 quando o SDK atingiu o fim da vida -->
  <CheckSdkVulnerabilities>true</CheckSdkVulnerabilities>
</PropertyGroup>

Com isso, o build emite o aviso NETSDK1239 quando o SDK está fora do ciclo de vida. Esse aviso é diferente do NETSDK1138, que aparece quando o próprio framework de destino não tem mais suporte.

Estratégia de equipes para o fim do suporte do .NET 8

Equipes com muitos projetos devem migrar de forma incremental. Assim, comece pelos sistemas menos críticos para validar o processo antes de tocar nos sistemas de alto impacto.

Uma abordagem eficaz é executar a versão migrada em paralelo com a original em staging. Dessa forma, você compara o comportamento antes de promover a mudança para produção.

Também verifique a compatibilidade das bibliotecas de terceiros com o .NET 10. Afinal, a cadeia de dependências pode impor restrições que travam todo o processo.

Um checklist simples ajuda a organizar o trabalho antes do fim do suporte do .NET 8:

  • Inventariar todos os projetos e seus TargetFramework.
  • Atualizar o SDK nas máquinas, pipelines e servidores.
  • Revisar os breaking changes de cada área usada pelo projeto.
  • Rodar a suíte de testes completa após a troca de versão.
  • Validar as imagens de contêiner baseadas em Ubuntu.

Usuários de aplicações de terceiros

Nem toda empresa controla o código que executa. Nesse caso, a orientação da Microsoft é procurar o fornecedor e perguntar se já existe uma versão para o .NET 10.

Isso é especialmente relevante em ambientes corporativos. Afinal, a atualização depende do ciclo de desenvolvimento do fornecedor, e não da equipe interna.

Cenário de versões e datas de suporte

A tabela a seguir resume as versões e seus respectivos ciclos de suporte:

Versão Lançamento Tipo Fim do suporte
.NET 8 14 de novembro de 2023 LTS 10 de novembro de 2026
.NET 9 12 de novembro de 2024 STS (24 meses) 10 de novembro de 2026
.NET 10 11 de novembro de 2025 LTS Novembro de 2028

A convergência das datas cria uma janela crítica de atualização. Por isso, o fim do suporte do .NET 8 e do .NET 9 deve entrar no planejamento de 2026 de qualquer equipe .NET.

Por que não esperar pelo .NET 11

O .NET 11 é uma versão STS, com lançamento previsto para novembro de 2026. Consequentemente, ela terá 24 meses de suporte.

Além disso, esperar pelo .NET 11 significa ficar sem cobertura entre o fim do suporte do .NET 8 e a adoção da nova versão. Já o .NET 10 está disponível hoje e tem suporte até 2028.

Por esse motivo, migrar agora para o .NET 10 é a escolha mais estratégica para quem busca estabilidade. Quem quiser acompanhar as novidades da próxima versão pode ler sobre o .NET 11 RC 1.

Conclusão sobre o fim do suporte do .NET 8

O fim do suporte do .NET 8 e do .NET 9 em 10 de novembro de 2026 é um ponto de inflexão para toda a comunidade. As aplicações continuam rodando, mas deixam de receber correções de segurança.

A Microsoft recomenda explicitamente a migração para o .NET 10, a LTS atual, com suporte até novembro de 2028. Na maioria dos projetos, a troca começa com uma única linha no .csproj.

Portanto, planeje a migração com antecedência, revise os breaking changes e use o agente de modernização do GitHub Copilot quando fizer sentido. Assim, você evita a exposição a vulnerabilidades e mantém o suporte técnico ativo.

FAQ

O .NET 8 e o .NET 9 vão parar de funcionar após novembro de 2026?

Não. As aplicações continuam executando normalmente, mas não recebem mais atualizações de segurança ou correções da Microsoft.

Preciso migrar todos os projetos ao mesmo tempo?

Não existe exigência técnica de migração simultânea. A recomendação é priorizar os projetos mais expostos e migrar de forma incremental.

O .NET 10 é compatível com código escrito para o .NET 8?

Na maioria dos casos, sim. Mesmo assim, revise a documentação de breaking changes antes de migrar projetos em produção.

O que é o GitHub Copilot app modernization?

É o agente recomendado pela Microsoft para migrar projetos .NET, disponível no Visual Studio 2026 e no Visual Studio 2022 17.14.16 ou superior. Ele substituiu o .NET Upgrade Assistant, que foi declarado obsoleto.

O ASP.NET Core e o EF Core precisam ser atualizados junto com o runtime?

Sim. Eles seguem o ciclo de vida do runtime, então migrar para o .NET 10 implica usar o ASP.NET Core 10 e o EF Core 10.

Existe uma última atualização prevista para o .NET 8 e o .NET 9?

Possivelmente. Como 10 de novembro de 2026 é um Patch Tuesday, a Microsoft pode publicar uma atualização final caso exista um problema crítico conhecido.

Como saber se meu build usa um SDK fora de suporte?

Defina a propriedade CheckSdkVulnerabilities como true no projeto. Com um SDK recente, o build emite o aviso NETSDK1239 quando o SDK em uso atingiu o fim da vida.