Lançamento do .NET 11: o que chegou e como atualizar

O lançamento do .NET 11 aconteceu em 10 de novembro de 2026, durante a abertura da .NET Conf 2026. A versão traz o C# 15, centenas de otimizações no runtime, um SDK mais rápido e novos recursos para ASP.NET Core, Blazor, .NET MAUI e aplicações de IA.
Além disso, o anúncio chega junto com uma data importante para quem mantém sistemas em produção. O .NET 8 e o .NET 9 saem de suporte no mesmo dia, por isso a decisão de atualizar deixou de ser opcional.
O que é o lançamento do .NET 11 e por que ele importa
O lançamento do .NET 11 marca a versão estável anual da plataforma, depois de sete previews e dois release candidates. Segundo a Microsoft, o trabalho reuniu mais de 7 mil contribuidores ao longo do ano.
Na prática, a versão tem três frentes claras. Primeiro, o C# 15 ganha recursos para modelar estados com segurança, como union types e hierarquias fechadas.
Em seguida, vem a produtividade do dia a dia, com um CLI que inicia mais rápido e um servidor do MSBuild que permanece aquecido. Por fim, a plataforma amplia o suporte a aplicações com IA e agentes, com templates, bibliotecas e componentes novos.
Suporte STS e o fim do .NET 8 e do .NET 9
O .NET 11 é uma versão STS (Standard Term Support), com dois anos de suporte. As versões STS e LTS têm a mesma política de qualidade e de correções, então a única diferença está no tempo de suporte.
Enquanto isso, o .NET 10 continua como a opção LTS vigente. Assim, quem prefere um ciclo mais longo pode migrar para o .NET 10 e deixar o .NET 11 para depois.
Com o lançamento do .NET 11, o .NET 8 e o .NET 9 deixam de receber correções em 10 de novembro de 2026. Portanto, aplicações nessas versões precisam escolher entre o .NET 10, pelo ciclo longo, ou o .NET 11, pelos recursos mais recentes.
C# 15 no lançamento do .NET 11
O C# 15 é a versão padrão da linguagem para projetos que usam net11.0. Ou seja, basta trocar o target framework para ter acesso aos novos recursos, sem ativar a versão preview da linguagem.
Union types e hierarquias fechadas
Os union types são uma das maiores novidades. Um valor do tipo union pertence a um conjunto declarado de tipos, com conversões automáticas e verificação de exaustividade nas expressões switch.
O exemplo a seguir modela uma consulta de produto que encontra o item ou informa que ele não existe:
ProductLookup result = new Product(42, "Mechanical keyboard");
// O compilador exige que todos os casos da union sejam tratados
string message = result switch
{
Product product => $"Found {product.Name}",
ProductNotFound missing => $"No product with ID {missing.Id}",
};
Console.WriteLine(message);
public sealed record Product(int Id, string Name);
public sealed record ProductNotFound(int Id);
public union ProductLookup(Product, ProductNotFound);
Dessa forma, o tipo de retorno informa a quem chama quais resultados precisam de tratamento. Não é mais necessário recorrer a object ou a uma classe base artificial só para agrupar os resultados.
O C# 15 também adiciona as hierarquias fechadas. Uma classe marcada como closed só permite herança direta dentro do assembly em que foi declarada, e isso permite ao compilador verificar padrões sobre a hierarquia.
Em outras palavras, unions servem para combinar tipos que já existem. Já as hierarquias fechadas atendem modelos em que você controla a relação de herança.
Para aprofundar a sintaxe e o funcionamento interno, vale ler o artigo sobre union types no .NET 11 e no C# 15, publicado aqui no balta.io.
Argumentos em collection expressions e outros recursos
Recursos menores também ajudam no código do dia a dia. Os argumentos em collection expressions permitem passar parâmetros de construtor ou de factory sem abrir mão da sintaxe de coleção:
// O comparer define a igualdade, então "Alice" e "ALICE" viram um único item
HashSet<string> names =
[with(StringComparer.OrdinalIgnoreCase), "Alice", "ALICE", "Bob"];
Console.WriteLine(names.Count); // 2
Além disso, a linguagem ganha extension indexers e os comandos break e continue com rótulos. Por outro lado, o trabalho de segurança de memória continua em preview e exige ativação explícita.
No F# 11, o compilador consome menos memória e o FSharp.Core aloca menos nas operações de coleção.
SDK e ferramentas no lançamento do .NET 11
No lançamento do .NET 11, o SDK passa a usar por padrão um host do CLI compilado com Native AOT. Assim, comandos como ajuda e consulta de versão executam sem iniciar o CLI gerenciado.
Além disso, o servidor do MSBuild agora permanece aquecido entre as chamadas do CLI. Com isso, builds repetidos evitam boa parte do custo de inicialização.
Outras mudanças do SDK merecem atenção:
- Os instaladores para Linux e macOS ficaram menores graças à deduplicação de assemblies.
- Aplicações baseadas em arquivo podem se dividir em vários arquivos com a diretiva
#:include. - O
dotnet watchintegra com o app host do Aspire, recupera falhas e seleciona dispositivos móveis.
Para times que usam o Microsoft.Testing.Platform, o dotnet test ganha timeout por execução, limite de falhas e diretórios de resultado por módulo. No entanto, essas opções não substituem as opções de linha de comando do VSTest.
Na publicação de containers, o SDK gera digests reproduzíveis com SOURCE_DATE_EPOCH e evita reenviar camadas que já existem. Já o NuGet aceita uma idade mínima de publicação, que atrasa a adoção de pacotes recém publicados.
Por fim, o novo gerenciador dotnetup instala e atualiza SDKs e runtimes na conta do usuário. A ferramenta está em preview pública e facilita manter várias versões lado a lado.
Runtime, performance e Runtime Async
O trabalho de performance atinge tanto o código publicado quanto as ferramentas de desenvolvimento. O compilador JIT remove mais verificações de limites e desvios redundantes, melhora a desvirtualização e transforma mais operações em constantes.
Por exemplo, o JIT consegue otimizar chamadas a SequenceEqual quando conhece as entradas em tempo de compilação. Essas melhorias chegam sem exigir mudanças na lógica da aplicação.
No Native AOT, o despacho de interfaces usa um helper compartilhado, que reduz o código em cada chamada. Como o lançamento do .NET 11 também amplia o suporte a hardware, o tipo Half ganha instruções FP16 em x64 e Arm64.
Na parte de diagnóstico, o registro de falhas dentro do próprio processo agora funciona em Linux e macOS. Ele captura a stack trace gerenciada, os módulos e o estado do runtime antes de o processo encerrar.
Mesmo assim, meça o efeito na sua aplicação, porque os ganhos variam conforme a carga e o modo de publicação.
O Runtime Async foi um tema constante nos previews. Ele move a suspensão e a retomada de métodos assíncronos para o runtime, no lugar das máquinas de estado geradas pelo compilador.
O resultado mais visível é uma call stack ao vivo mais limpa. Assim, profilers e debuggers mostram os próprios métodos assíncronos, e não a infraestrutura que os executa.
O recurso continua em preview no lançamento do .NET 11, mas não exige mais EnablePreviewFeatures. Para testar em um projeto com net11.0, adicione a propriedade abaixo:
<PropertyGroup>
<!-- Ativa o Runtime Async apenas para o código da sua aplicação -->
<Features>runtime-async=on</Features>
</PropertyGroup>
As bibliotecas do próprio .NET já são compiladas com Runtime Async. Ainda assim, ativar o modelo no seu código é uma escolha separada, por isso convém testar dependências e diagnósticos antes de adotar.
IA no lançamento do .NET 11
A inteligência artificial ocupa um espaço grande no lançamento do .NET 11. O SDK agora inclui um template de servidor MCP, que usa o SDK oficial de MCP para C# e já traz uma ferramenta de exemplo funcionando:
dotnet new mcpserver -o MyMcpServer
O MCP padroniza como aplicações de IA descobrem e chamam ferramentas. Com o template no SDK, não é preciso instalar outro pacote para começar.
Para consumir modelos, o Microsoft.Extensions.AI oferece abstrações como IChatClient e IEmbeddingGenerator. Essas bibliotecas combinam acesso a modelos com injeção de dependência, cache e OpenTelemetry, e chegam como pacotes NuGet.
Já o Microsoft Agent Framework constrói agentes sobre essas abstrações. Os agentes chamam ferramentas, mantêm o estado da conversa e participam de workflows junto com o código da aplicação.
Também é possível conectar agentes a ferramentas MCP e expor um agente por um endpoint AG-UI no ASP.NET Core. Porém, essa integração de hospedagem com AG-UI ainda está em prerelease.
Para quem usa agentes de código, o .NET Skills fornece orientações específicas do time do .NET. Além disso, o .NET MAUI DevFlow, ainda experimental, expõe a árvore visual e capturas de tela de um app em execução para que o agente teste a interface.
Na modernização, o .NET Upgrade canvas mostra o progresso de uma atualização feita com o GitHub Copilot. Dessa forma, o lançamento do .NET 11 também ajuda quem precisa migrar sistemas legados.
Bibliotecas e Entity Framework Core 11
As bibliotecas trazem recursos que antes exigiam configuração extra, buffers intermediários ou helpers próprios. A API de Process, por exemplo, ganhou métodos para executar um processo e capturar a saída e o código de término em uma única chamada.
A compressão Zstandard entra no System.IO.Compression, junto com APIs baseadas em span. Além disso, a leitura de arquivos ZIP agora valida o CRC32 de cada entrada.
Com o lançamento do .NET 11, quatro adaptadores entregam dados em memória como Stream, entre eles ReadOnlyMemoryStream e StringStream. Assim, uma ReadOnlySequence<byte> vira stream sem cópia para um buffer contínuo.
O System.Text.Json serializa unions do C#, discriminated unions do F# e gera JSON Lines a partir de sequências assíncronas. Contudo, o suporte a unions do F# usa reflexão e não funciona com source generation, trimming ou Native AOT.
O LINQ ganha o operador FullJoin, que preserva os elementos sem correspondência dos dois lados. Esse operador ajuda em conciliações, como comparar dois inventários e encontrar itens que faltam em qualquer um deles.
No Entity Framework Core 11, o foco está na tradução das consultas para SQL. O EF Core remove joins desnecessários em mais cenários, melhora o GroupBy e traduz o novo FullJoin nos providers relacionais que o suportam.
Para SQL Server, o EF Core suporta índices vetoriais e busca vetorial aproximada. Esses recursos, porém, ainda são experimentais.
Vale lembrar que o EF Core 11 exige o .NET 11. Por isso, antes de atualizar, confira a compatibilidade do seu provider e a lista de breaking changes.
ASP.NET Core e Blazor
O ASP.NET Core reconhece unions do C# em todos os lugares que usam System.Text.Json, inclusive nos corpos JSON das Minimal APIs e do MVC. Além disso, os documentos OpenAPI gerados descrevem as alternativas da union com um schema anyOf.
Esse suporte vale apenas para corpos JSON, e não para rota, query string, header ou formulário.
A validação também fica mais útil para regras que dependem de I/O. A validação assíncrona usa as novas APIs assíncronas de DataAnnotations, então um validador pode aguardar uma consulta ao banco sem bloquear uma thread.
Se você ainda não usa validação nativa nas Minimal APIs, o artigo sobre validação em Minimal APIs no .NET 10 explica a base que o .NET 11 estende.
O OpenAPI 3.2 passa a ser o padrão dos documentos gerados. Caso o gerador de clientes ainda não suporte essa versão, você pode escolher uma anterior.
No lançamento do .NET 11, o Blazor também traz novidades importantes:
- O componente
CacheViewguarda o HTML renderizado de uma subárvore de componentes durante a renderização estática no servidor. - Apps Interactive Server podem pausar o circuito quando a aba fica inativa, liberando memória e a conexão do SignalR.
- Formulários ganham validação no cliente com renderização estática e suporte à validação assíncrona.
QuickGrideVirtualizeconseguem rolar até um item específico de uma coleção grande.
Para interfaces com agentes, o novo pacote Microsoft.AspNetCore.Components.AI oferece componentes de chat com streaming, renderização de ferramentas e fluxos de aprovação. No entanto, esse pacote é experimental e permanece em prerelease durante todo o ciclo do .NET 11.
.NET MAUI e aplicações Windows
No .NET MAUI, o lançamento do .NET 11 torna o CoreCLR o runtime padrão em todas as plataformas. Com isso, apps móveis e desktop usam a mesma base das outras cargas do .NET.
Nas plataformas da Apple que não permitem JIT, o runtime usa código pré compilado e o interpretador. Já o Native AOT continua opcional, e o suporte no Android ainda é experimental.
O ciclo de desenvolvimento de interfaces também melhorou. O Hot Reload incremental de XAML, em preview, atualiza páginas e controles em execução sem precisar sair e voltar da tela.
Além disso, as declarações implícitas de namespace XAML eliminam a repetição no topo de cada arquivo.
Atenção para a migração: o pacote Microsoft.Maui.Controls.Compatibility deixou de ser distribuído. Apps que ainda dependem dele precisam remover essa referência antes de atualizar.
No Windows, o WinUI 3 é o framework recomendado para novos apps desktop. O Windows Forms ganha um modo opcional de estilos visuais modernos, e o WPF recebe principalmente correções de confiabilidade.
Como atualizar após o lançamento do .NET 11
Depois do lançamento do .NET 11, o primeiro passo é instalar o SDK e use uma versão atualizada do Visual Studio 2026 ou o Visual Studio Code com o C# Dev Kit. Em seguida, crie um projeto de teste para experimentar os recursos:
dotnet new console -n HelloDotnet11 -f net11.0
dotnet run --project HelloDotnet11
Para uma aplicação existente, a Microsoft recomenda planejar a atualização em quatro etapas:
- Atualize o SDK no
global.json, se o repositório fixar uma versão, e instale o mesmo SDK nas máquinas e nos agentes de build. - Troque o target framework para
net11.0, preservando sufixos de plataforma, e atualize pacotes e workloads. - Revise os breaking changes do .NET 11, inclusive os novos requisitos mínimos de CPU.
- Rode os testes e meça a aplicação com uma carga representativa, validando o modo de publicação, as imagens de container e os hosts.
Note que instalar o novo SDK não muda o target da aplicação.
Quem testou um release candidate deve migrar para o SDK, o runtime e os pacotes finais. Afinal, manter um build de prerelease em produção depois do lançamento do .NET 11 não faz sentido.
Se você quer um panorama das versões preview, o artigo sobre as novidades do .NET 11 no runtime, C# 15, ASP.NET Core e EF Core cobre o caminho até aqui. Já a lista completa das mudanças está na documentação oficial de novidades do .NET 11.
Conclusão sobre o lançamento do .NET 11
O lançamento do .NET 11 entrega uma versão madura, com ganhos que aparecem tanto no código quanto nas ferramentas. O C# 15 resolve um problema antigo de modelagem com unions e hierarquias fechadas, enquanto o SDK reduz a espera em comandos do dia a dia.
Ao mesmo tempo, a plataforma deixa claro o rumo para aplicações com IA. Template de MCP, Microsoft.Extensions.AI, Agent Framework e componentes Blazor para agentes formam uma base coerente, embora parte dela ainda esteja em preview.
Por fim, a decisão de atualizar ficou urgente para quem está no .NET 8 ou no .NET 9. Escolha o .NET 10 se o ciclo LTS for prioridade, ou siga o lançamento do .NET 11 se os novos recursos pesarem mais.
FAQ
Quando aconteceu o lançamento do .NET 11?
Segundo a Microsoft, o lançamento do .NET 11 aconteceu em 10 de novembro de 2026, durante a .NET Conf 2026.
O .NET 11 é LTS ou STS?
Trata-se de uma versão STS, com dois anos de suporte. Enquanto isso, o .NET 10 continua sendo a versão LTS vigente.
Preciso ativar algo para usar os union types?
Não, porque o C# 15 é a versão padrão para projetos com net11.0. Apenas a parte de segurança de memória segue em preview.
O Runtime Async já está estável?
Não, ele continua em preview e precisa da propriedade runtime-async=on no projeto. Porém, ele não exige mais EnablePreviewFeatures.
O que acontece com o .NET 8 e o .NET 9?
As duas versões perderam o suporte em 10 de novembro de 2026. Por isso, a recomendação é migrar para o .NET 10 ou para o .NET 11.