Pular para o conteúdo

.NET 11 traz as unions do C# 15; acaba o suporte ao .NET 8 e ao 9

O .NET 11 e o C# 15 saíram em 10 de novembro, dia em que acabou o suporte ao .NET 8 e ao 9. Num teste prático, um caso de union esquecido só gerou um aviso e depois uma falha.

Por

5 min de leitura

XLinkedIn

Traduzido automaticamente do original em inglês, que Claire Whitmore verificou e editou. Prevalece a versão em inglês. Como trabalhamos

Screenshot of Microsoft's .NET and .NET Core Support Policy page, with a supported versions table listing .NET 11 (STS) and .NET 10 (LTS), both supported until November 14, 2028.

Em números

fim do suporte ao .NET 8 e ao .NET 9
10 nov. 2026
fim do suporte ao .NET 10 e ao .NET 11
14 nov. 2028
de suporte para o .NET 11, uma versão Standard Term Support
2 anos

A Microsoft lançou o .NET 11 em 10 de novembro de 2026, com o C# 15 e os novos tipos union. No mesmo dia, o .NET 8 e o .NET 9 chegaram ao fim do suporte, segundo a página de política de suporte da Microsoft. O .NET da Microsoft é uma plataforma gratuita e de código aberto para criar aplicativos, e o C# é a sua linguagem principal. Aplicativos que ainda rodam no .NET 8 ou 9 não recebem mais correções de segurança da Microsoft.

O anúncio no .NET Blog saiu no primeiro dia da .NET Conf 2026, que vai de 10 a 13 de novembro. O Thurrott.com observa que o .NET 11 é uma versão Standard Term Support (STS), com dois anos de suporte. Versões Long Term Support (LTS), como o .NET 10, recebem três anos.

O que há no .NET 11 e no C# 15

O destaque é a linguagem. O C# 15 é o padrão em qualquer projeto que tenha o .NET 11 como alvo, então não é preciso nenhuma configuração extra. A página "Novidades do C# 15" da Microsoft lista estes recursos:

RecursoO que fazPrecisa de flag de prévia
Tipos unionUm tipo que guarda exatamente um de uma lista fixa de tiposNão
Hierarquias fechadasUma classe base cujas subclasses o compilador conhece por completoNão
Argumentos de expressões de coleçãoPassar configurações do construtor, como uma capacidade, dentro de [...]Não
Indexadores de extensãoAdicionar acesso [index] a um tipo que não é seuNão
break e continue com rótuloSair de um laço externo a partir de um internoNão
Membros estáticos de interface em runtimes antigosMétodos estáticos simples em interfaces, sem apoio de runtimes novosNão
Regras de segurança de memóriaNovas regras para código inseguro com ponteirosSim

Uma union é útil quando um valor pode ter uma entre várias formas, como um pagamento por cartão, transferência ou vale. O compilador então verifica se o código trata cada forma.

O resto da versão trata de ferramentas e bibliotecas. O .NET Blog cita um host nativo de linha de comando e um servidor MSBuild que fica ativo para builds mais rápidos. Também cita o suporte ao OpenAPI 3.2 no ASP.NET Core e blocos de IA com MCP, o Model Context Protocol que liga modelos de IA a ferramentas. O framework de aplicativos para celulares e desktops, .NET MAUI, agora roda no CoreCLR por padrão. A Microsoft fala em "centenas de otimizações de runtime", mas não dá números no anúncio.

Quais versões do .NET ainda têm suporte

A tabela abaixo vem da página de política de suporte da Microsoft, atualizada em 10 de novembro de 2026. Segundo a página, as versões de número par são LTS e as de número ímpar são STS.

VersãoTipoLançamentoÚltimo patchFim do suporte
.NET 11STS10 de novembro de 202611.0.014 de novembro de 2028
.NET 10LTS11 de novembro de 202510.0.1514 de novembro de 2028
.NET 9STS12 de novembro de 20249.0.2310 de novembro de 2026
.NET 8LTS14 de novembro de 20238.0.3410 de novembro de 2026

Um detalhe chama a atenção. Tanto o .NET 11 quanto o .NET 10 perdem o suporte no mesmo dia, 14 de novembro de 2028. Escolher a versão STS já não significa uma vida mais curta que a LTS. A política da Microsoft também diz que só o patch mais recente de cada versão tem suporte. Os últimos seis meses de cada versão recebem apenas correções de segurança.

Teste da Tech AI Wire: unions do C# 15 no SDK do .NET 11

Num teste da Tech AI Wire no macOS 26, a imagem de contêiner oficial mcr.microsoft.com/dotnet/sdk:11.0 (Ubuntu 26.04.1, arm64) informou o SDK 11.0.100. Um novo projeto de console tinha net11.0 como alvo, sem configuração de linguagem. Os exemplos de C# 15 da própria Microsoft compilaram e rodaram como estão escritos, com uma pequena grade adicionada para o break com rótulo:

Pet pet = new Dog("Rex");
string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

public union Pet(Cat, Dog, Bird);

A primeira execução de dotnet run, com o build incluído, levou 2,6 segundos. Os outros recursos também funcionaram. Um HashSet criado com um comparador que ignora maiúsculas manteve só um entre "Hello", "HELLO" e "hello". Um break com rótulo saiu dos dois laços de uma vez.

Em seguida, o teste apagou a linha de Bird do switch. O build ainda assim deu certo. Ele mostrou o aviso CS8509: "The switch expression does not handle all possible values of its input type (it is not exhaustive). For example, the pattern 'Bird' is not covered." Ou seja, a expressão switch não cobre todos os valores do seu tipo de entrada, por exemplo 'Bird'. Quando o programa depois recebeu um Bird, ele travou com uma SwitchExpressionException e código de saída 134.

A correção foi uma única configuração. Com -p:WarningsAsErrors=CS8509, o mesmo build falhou com o erro CS8509 e código de saída 1. A verificação de segurança existe, mas por padrão é só um aviso.

O que isso significa para desenvolvedores

Duas coisas pedem atenção nesta semana: versões antigas e hábitos novos.

  • Saia do .NET 8 e do .NET 9. Nenhum dos dois recebe patches desde 10 de novembro. As últimas versões que a Microsoft lista são 8.0.34 e 9.0.23. Qualquer falha de segurança encontrada daqui em diante ficará aberta nelas.
  • Escolha entre 10 e 11 pelos recursos, não pela duração do suporte. Os dois têm suporte até 14 de novembro de 2028. O .NET 11 traz o C# 15; para uma equipe no .NET 8, o .NET 10 é o salto menor.
  • Transforme o CS8509 em erro antes de usar unions. Adicione <WarningsAsErrors>CS8509</WarningsAsErrors> ao arquivo de projeto, a mesma configuração que fez o build do teste falhar. Sem ela, um novo caso adicionado a uma union pode compilar sem problemas e falhar só em produção.
  • Deixe as regras de segurança de memória de lado por enquanto. Elas ainda exigem uma flag de prévia, então podem mudar antes de uma versão futura.
  • Atualize os builds em contêiner. No teste, a tag sdk:11.0 baixou o SDK 11.0.100. Fixe a imagem pelo digest nos seus Dockerfiles, para que cada build use o SDK que você testou.

Equipes no .NET 10 não têm prazo. Podem testar o C# 15 numa branch e migrar quando as bibliotecas de que dependem tiverem suporte ao .NET 11.

Fontes

  1. Announcing .NET 11 - .NET Blog
  2. .NET and .NET Core Support Policy - Microsoft
  3. What's new in C# 15 - Microsoft Learn
  4. Microsoft Releases .NET 11 - Thurrott.com

Artigos relacionados