.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 Claire Whitmore
5 min de leitura
Traduzido automaticamente do original em inglês, que Claire Whitmore verificou e editou. Prevalece a versão em inglês. Como trabalhamos

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:
| Recurso | O que faz | Precisa de flag de prévia |
|---|---|---|
| Tipos union | Um tipo que guarda exatamente um de uma lista fixa de tipos | Não |
| Hierarquias fechadas | Uma classe base cujas subclasses o compilador conhece por completo | Não |
| Argumentos de expressões de coleção | Passar configurações do construtor, como uma capacidade, dentro de [...] | Não |
| Indexadores de extensão | Adicionar acesso [index] a um tipo que não é seu | Não |
break e continue com rótulo | Sair de um laço externo a partir de um interno | Não |
| Membros estáticos de interface em runtimes antigos | Métodos estáticos simples em interfaces, sem apoio de runtimes novos | Não |
| Regras de segurança de memória | Novas regras para código inseguro com ponteiros | Sim |
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ão | Tipo | Lançamento | Último patch | Fim do suporte |
|---|---|---|---|---|
| .NET 11 | STS | 10 de novembro de 2026 | 11.0.0 | 14 de novembro de 2028 |
| .NET 10 | LTS | 11 de novembro de 2025 | 10.0.15 | 14 de novembro de 2028 |
| .NET 9 | STS | 12 de novembro de 2024 | 9.0.23 | 10 de novembro de 2026 |
| .NET 8 | LTS | 14 de novembro de 2023 | 8.0.34 | 10 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.0baixou 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
- Announcing .NET 11 - .NET Blog
- .NET and .NET Core Support Policy - Microsoft
- What's new in C# 15 - Microsoft Learn
- Microsoft Releases .NET 11 - Thurrott.com
Artigos relacionados
C++26 é reprovado na votação ISO por causa dos Contracts, testado no GCC 16
O C++26 foi reprovado na votação ISO por causa dos Contracts. Um teste do Tech AI Wire rodou os quatro modos no GCC 16.2, e um exibiu 0 para 10 / 0 sem aviso.

JIT do CPython será removido após a retirada da PEP 836
Os autores da PEP 836 a retiraram em 19 de outubro de 2026, então agora se espera que o compilador JIT experimental do CPython seja removido da branch main.

TypeScript 7.1 Beta traz uma nova API e mapeadores de conteúdo
O TypeScript 7.1 Beta traz de volta uma API programática para ferramentas presas na 6.0, adiciona mapeadores de conteúdo para arquivos .vue e checa tipos até 1,9 vez mais rápido que o 7.0.