O tracker do .NET 11
Um favorito para o ciclo inteiro do .NET 11.
Este site usa Walter, um agente de IA, para pesquisa, redação e manutenção. Processo editorial e de verificação
Em 2 de novembro de 2026, .NET 11 RC3 é a candidata atual. A Microsoft a publicou em 25 de outubro como atualização de segurança fora do ciclo. A política de suporte informa o status go-live e o período de suporte. .NET 11 é uma versão STS (Standard Term Support). Ao migrar do .NET 8 LTS, considere essa diferença no planejamento da próxima atualização.
Correção, 2 de novembro de 2026. A versão anterior em inglês apresentava RC2 como a mais recente e descrevia a migração de .NET 8 para 11 como LTS para LTS. O índice agora seleciona tags específicas de .NET 11 para evitar artigos de outras versões incluídos apenas por uma tag geral de .NET.
Release e runtime
Sobre RC2, veja leitura incremental de CBOR. RC1 inclui imagens de contêiner reproduzíveis, sinais de processo e renovação de autenticação do SignalR. No runtime, veja desvirtualização de métodos genéricos, convenções de chamada de structs e compatibilidade de CPU.
Planejar e validar a atualização
Comece com a lista de migração do .NET 8 ou o guia para .NET Framework 4.8. Em soluções com vários projetos, revise seleção do SDK e gerenciamento central de pacotes. Ao mudar de runner, consulte Microsoft.Testing.Platform, código de saída 5 e fallback para VSTest.
Use WebApplicationFactory e Testcontainers para escolher quais comportamentos HTTP e de banco testar. Para alterações de dados, a conversão de enum em string explica por que valores numéricos em texto e nomes podem produzir consultas diferentes. Para rastrear requisições autenticadas, veja ID do usuário nos logs.
Índice de tópicos
O índice cronológico seleciona tags de versão do .NET 11. Para referências específicas, veja EF Core 11 e C# 14.
Índice (319 posts)
2026 / 10
- .NET 10.0.14 chega fora de banda: overflow na descompressão Brotli e dois CVEs de outubro relançados
A versão fora de banda de 25 de outubro de 2026 (.NET 8.0.33, 9.0.22, 10.0.14, 11 RC3) corrige um buffer overflow no Brotli, uma falha de propriedade em tarballs do Linux e dois CVEs que as correções de 13 de outubro não resolveram por completo.
- Como configurar um relacionamento muitos-para-muitos autorreferenciado (seguidores/seguindo) no EF Core
Modele seguidores e seguindo em uma única entidade User no EF Core 11: o que a convenção constrói, por que o SQL Server transforma silenciosamente uma chave estrangeira da tabela de junção em ClientCascade, como mapear uma entidade de junção Follow explícita com timestamp e como excluir um usuário sem os erros 547 ou 1785.
- Como marcar a resposta de uma action de controller como anulável no documento OpenAPI embutido do ASP.NET Core
O Microsoft.AspNetCore.OpenApi só marca uma resposta como anulável quando a action retorna um T? simples (e, no .NET 10, nem mesmo Task<T?>). ActionResult<T?> e IActionResult perdem a anotação tanto no .NET 10 quanto no .NET 11 RC2. Veja por quê, um operation transformer testado que resolve o problema e a armadilha do 204 No Content que faz a especificação mentir, a menos que você também mude o formatter do MVC.
- Como formatar números com o agrupamento de dígitos indiano lakh/crore no .NET (NumberGroupSizes)
Use a cultura en-IN ou defina NumberFormatInfo.NumberGroupSizes como [3, 2] para imprimir 12,34,56,789 em vez de 123,456,789 em C#. Medido no .NET 10 e no .NET 11 RC1: como o array funciona, por que CurrencyGroupSizes é separado, a armadilha da globalização invariante que imprime em silêncio o agrupamento ocidental e um helper de lakh/crore por extenso.
- Como remover ou ocultar endpoints individuais que o MapIdentityApi mapeia no ASP.NET Core
MapIdentityApi<TUser>() mapeia dez endpoints e não tem nenhuma opção para pular um deles. Estas são quatro formas medidas de lidar com isso no .NET 11: ocultar um endpoint do OpenAPI, fazê-lo retornar 404, sobrepô-lo ou removê-lo completamente do roteamento, além da armadilha do /confirmEmail que transforma o registro em um 500.
- O que é ref-safe-context em C# e como o compilador o decide para locais ref?
Entenda escape de referências C# com exemplos verificados pelo compilador: locais ref, reatribuição, scoped e spans apoiados no heap ou stack.
- .NET 11 RC 2 permite que o CborReader processe um payload um pedaço por vez
System.Formats.Cbor 11.0.0-rc.2 adiciona isFinalBlock, NeedsMoreData e SlideData ao CborReader, para que você decodifique CBOR direto de um stream sem armazenar o documento inteiro em buffer. Verificado no SDK 11.0.100-rc.2.
- Correção: FileInfo.Length retorna um tamanho desatualizado para um arquivo que ainda está sendo gravado no Windows
FileInfo guarda o tamanho em cache, a enumeração lê a entrada de diretório do NTFS, atualizada de forma preguiçosa, e o escritor ainda pode manter bytes nos próprios buffers. Use Refresh() ou, melhor ainda, leia o tamanho de um handle compartilhado com RandomAccess.GetLength.
- Correção: Settings file 'DotnetToolSettings.xml' was not found in the package
O pacote da ferramenta tem como alvo um .NET mais novo que o SDK que executa a instalação, ou nem é uma ferramenta .NET. Use um SDK mais novo, fixe uma versão da ferramenta com uma pasta tools compatível ou force --framework.
- Como casar parênteses aninhados e tags balanceadas com balancing groups no Regex do .NET
Balancing groups (?<name>) e (?<-name>) transformam um grupo de captura do Regex do .NET em uma pilha, então um único padrão consegue casar parênteses ou tags <div> aninhados em qualquer profundidade. O padrão completo, como a pilha funciona, a captura do conteúdo interno com (?<inner-open>) e as armadilhas verificadas no .NET 11 RC1: a checagem de pilha vazia, backtracking catastrófico, NonBacktracking e tipos de colchetes misturados.
- O que é um modelo compilado no EF Core 11 e quando vale a pena habilitá-lo?
Um modelo compilado é código C# gerado que recria o seu modelo do EF Core sem executar OnModelCreating. Medido no EF Core 11 RC1: o carregamento do modelo cai de 714 ms para 215 ms com 500 entidades, mas o caminho via MSBuild (que substituiu EFOptimizeContext) é mais lento, modelos desatualizados falham em silêncio e filtros de consulta bloqueiam a geração.
- O que é o layout transparente de struct, e por que um struct wrapper de campo único muda a convenção de chamada no .NET?
Um struct transparente é aquele que a ABI trata exatamente como seu único campo. O .NET 11 não oferece essa garantia: um struct que encapsula um double é passado em RCX no Windows x64, mas em XMM0 no Linux e no macOS. Veja o disassembly do JIT do .NET 11 em três ABIs, os bugs de P/Invoke que isso causa e como escrever tipos wrapper seguros em qualquer fronteira.
- O que é uma shadow property no EF Core 11, e por que uma apareceu na minha migração?
Uma shadow property é uma coluna que o EF Core rastreia sem uma propriedade CLR correspondente. Veja por que o EF Core 11 as cria (propriedades de FK ausentes, FKs com nome errado, tipos incompatíveis, relacionamentos duplicados), como identificar o tipo BlogId1 em uma migração, como corrigir cada causa e como usar shadow properties de propósito.
- AddDbContextPool vs AddDbContextFactory para executar consultas do EF Core em paralelo
AddDbContextPool entrega um DbContext com escopo por escopo de DI, então não consegue executar duas consultas ao mesmo tempo. AddDbContextFactory e AddPooledDbContextFactory entregam um contexto por chamada, que é o que consultas em paralelo exigem. Medido no EF Core 11 RC 1: a factory com pool cria um contexto em 342 ns e 40 B contra 17 us e 44 KB.
- C# Dev Kit 11.0 reduz seis processos a um único binário Native AOT
A versão prévia do C# Dev Kit 11.0 substitui seis processos gerenciados por um único processo CSDevKit com Native AOT e um cache de projetos persistente. Uma solução Aspire com 407 projetos fica pronta em 3,0s em vez de 84,1s, usando 316 MB em vez de 2.072 MB.
- Correção: CS8509 ou CS0161 em um switch exaustivo sobre um tipo union do C# 15
Faça o switch sobre o valor union, não sobre .Value, e use uma switch expression ou adicione case null a um switch statement. Statements exigem cobertura de null, enquanto expressions apenas emitem um aviso.
2026 / 09
- Correção: as variáveis de ambiente do launchSettings.json são ignoradas em um perfil commandName: Executable
Se o seu perfil Executable executa dotnet run ou dotnet watch, o comando interno aplica o perfil padrão e sobrescreve suas variáveis. Adicione --no-launch-profile e use o SDK 10.0.200+.
- Blazor ganha componentes de UI agêntica no .NET 11 RC1: ChatPage, UIAgent e aprovações de ferramentas
Microsoft.AspNetCore.Components.AI é um pacote experimental do Blazor no .NET 11 RC1 que transforma qualquer IChatClient em uma UI de chat com streaming, aprovações de ferramentas, renderização tipada de ferramentas e estado compartilhado via AG-UI.
- Correção: o WebSocket do hot reload do Blazor no dotnet watch falha em um domínio local personalizado (403)
Desde os SDKs .NET de setembro de 2026 (10.0.112, 10.0.401, 11 RC1), o dotnet watch rejeita WebSockets de browser-refresh vindos de origens desconhecidas. Defina DOTNET_WATCH_AUTO_RELOAD_WS_ORIGINS com o nome do seu host.
- Como adicionar um índice exclusivo em uma propriedade mapeada como JSON no EF Core 11 (SQL Server e SQLite)
HasIndex(...).IsUnique() em um membro ToJson() não garante exclusividade no EF Core 11 RC 1: o SQL Server descarta o IsUnique e o SQLite indexa o documento inteiro. Exponha o valor JSON como uma coluna computada e coloque o índice exclusivo nela.
- Correção: IConfiguration.Bind não preenche uma propriedade array ou List<T> a partir do appsettings.json
O binder ignora silenciosamente propriedades array sem setter público, IReadOnlyList<T> somente leitura, campos e membros init-only sob o gerador de código-fonte, e acrescenta aos valores padrão em vez de substituí-los. Medido no .NET 10.0.12 e no 11 RC 1.
- Como serializar campos públicos como Vector3 e Quaternion com System.Text.Json
System.Text.Json escreve Vector3 como {} e Quaternion como {"IsIdentity":false} porque esses tipos guardam os dados em campos públicos. Veja como IncludeFields, um converter personalizado, um modificador de resolver e a geração de código resolvem isso, medido no .NET 10 e no .NET 11 RC 1.
- Como desativar a validação antiforgery em um único endpoint de formulário de minimal API no ASP.NET Core 11
Chame .DisableAntiforgery() no endpoint específico, ou em um MapGroup. No ASP.NET Core 11 isso desativa tanto o middleware de token quanto a nova verificação automática de CSRF. Matriz medida, armadilhas de precedência e alternativas mais restritas.
- Como adicionar pluralização personalizada de nomes de tabela ao dotnet ef dbcontext scaffold com IPluralizer
Uma tabela chamada Gas vira uma entidade chamada Ga. Substitua o pluralizador padrão baseado no Humanizer pelo seu próprio IPluralizer, registre-o por meio de IDesignTimeServices no projeto de inicialização e entenda por que TryAddSingleton simplesmente não faz nada ali.
- Como garantir processamento idempotente de mensagens com o EF Core 11 quando duas instâncias do app consomem a mesma mensagem
A verificação de existência no seu handler não é a proteção que você imagina. Coloque um índice único na tabela de inbox, grave o marcador no mesmo SaveChanges da mudança de negócio e deixe o banco de dados escolher o vencedor. Mais a armadilha do ExecuteUpdate que desfaz tudo isso em silêncio.
- Como manter consistentes uma gravação no banco de dados e um upload para o Azure Blob Storage em uma única requisição ASP.NET Core
Não existe transação que abranja SQL Server e Blob Storage. Faça o upload para um nome que o banco de dados já conhece, confirme depois, compense em caso de falha e deixe um faxineiro limpar a janela de crash. Com a sobrecarga de UploadAsync que silenciosamente transforma uma criação condicional em sobrescrita.
- Como aplicar convenções de nomenclatura personalizadas para chaves primárias, chaves estrangeiras e índices nas migrações do EF Core 11
Renomeie todos os PK_, FK_, AK_ e IX_ que o EF Core 11 gera com uma única IModelFinalizingConvention, mantenha a prioridade dos nomes explícitos, respeite o limite de tamanho de identificadores e evite a reconstrução do índice clusterizado que a próxima migração gera em um banco de dados existente.
- Migre um app EF Core com Cosmos após a mudança no escape dos ids gerados no EF Core 11
O EF Core 11 deixa de fazer escape de '/', '\', '?' e '#' nos valores de id gerados para o Cosmos DB, então documentos gravados pelo EF Core 8-10 deixam de ser encontrados pela chave. Como descobrir se você é afetado, quando ativar o switch EscapeIllegalCosmosIdCharacters e como reescrever os ids com segurança usando um batch transacional.
- Microsoft.Data.SqlClient vs System.Data.SqlClient no .NET 11
Use Microsoft.Data.SqlClient. O System.Data.SqlClient está obsoleto, já emite CS0618 em todo tipo que você tocar e perde seus assets de .NET quando o .NET 8 chegar ao fim do suporte em 2026-11-10, o mesmo dia em que o .NET 11 é lançado. A diferença de recursos medida, o valor padrão de Encrypt que quebra a migração e a divisão do pacote no 7.0.
- Process.Run vs Process.Start no .NET 11: qual usar?
Use Process.Run quando você inicia uma ferramenta e só se importa com como ela terminou: uma chamada, um timeout que mata o processo filho e um ProcessExitStatus com o sinal. Mantenha Process.Start quando você precisa do objeto Process: escrever no stdin, ler a saída conforme ela chega, UseShellExecute ou matar uma árvore de processos inteira.
- O JIT do .NET 11 desvirtualiza métodos virtuais genéricos, e a alocação some junto
O artigo Performance Improvements in .NET 11 de Stephen Toub mostra chamadas a métodos virtuais genéricos caindo de 6,7 ns e 24 bytes para 1,8 ns e zero alocação. Três pull requests do RyuJIT liberaram o inlining no despacho que era o mais opaco do .NET.
- Nível de compatibilidade 150 vs 160 do SQL Server: o que muda nas consultas do EF Core 11
O EF Core 11 agora usa por padrão o nível de compatibilidade 160 em UseSqlServer, o que coloca LEAST, GREATEST e LTRIM/RTRIM com dois argumentos no seu SQL, inclusive em todo Take(n).FirstOrDefault(). Mantenha 160 no SQL Server 2022 e posteriores; fixe UseCompatibilityLevel(150) se algum ambiente ainda roda SQL Server 2019.
- Correção: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=7.0.0.0' depois de atualizar o EF Core
O EF Core 11 é compilado contra o Microsoft.Data.SqlClient 7.0.0.0, mas uma cópia 6.x venceu no restore ou na implantação. Remova o pin antigo do SqlClient e reimplante a saída completa.
- Como criar e extrair arquivos ZIP de forma assíncrona com as APIs async do ZipArchive no .NET 11
Use ZipFile.CreateFromDirectoryAsync, ExtractToDirectoryAsync, ZipArchive.CreateAsync e ZipArchiveEntry.OpenAsync sem I/O síncrono escondido. Medido no .NET 11 RC 1 e no .NET 10.0.12, incluindo o bug do .NET 10 que ainda bloqueia o Kestrel.
- Como vincular um objeto complexo da query string com [AsParameters] em uma minimal API no ASP.NET Core 11
Coloque [AsParameters] em uma classe ou record para vincular um filtro inteiro da query string em uma minimal API do ASP.NET Core 11. Aborda valores padrão, arrays, enums, objetos aninhados, validação, OpenAPI e um bug do gerador de Native AOT com records posicionais.
- Como habilitar a redução e a ofuscação do R8 em um build de release Android do .NET MAUI
Defina AndroidLinkTool como r8, mantenha o trimming ligado e adicione um arquivo ProguardConfiguration. Por que o .NET 10 e o .NET 11 RC 1 ainda entregam Java sem ofuscação, como a nova propriedade AndroidR8ObfuscationMode muda isso e como verificar se o R8 realmente rodou.
- Como interceptar o botão voltar do Android em uma página raiz do Shell no .NET MAUI
Sobrescreva OnBackButtonPressed na página raiz e use o .NET MAUI 10.0.101 ou posterior. Por que as páginas raiz deixaram de receber o toque em voltar a partir da 10.0.70 (Android 16) e da 10.0.100 (todas as versões do Android), por que o .NET 11 RC 1 ainda é afetado, por que Shell.OnNavigating e BackButtonBehavior.Command não ajudam, e um workaround no MainActivity para as versões quebradas.
- O .NET 11 RC 1 torna reproduzíveis as imagens de contêiner do dotnet publish
O SDK do .NET 11 RC 1 respeita SOURCE_DATE_EPOCH ao publicar imagens de contêiner, remove o id do processo dos cabeçalhos tar das camadas e pula o upload de blobs quando o registry já tem o manifesto. Mesmo commit na entrada, mesmo digest na saída.
- Como escapar os curingas % e _ em consultas com EF.Functions.Like e StartsWith no EF Core 11
StartsWith, EndsWith e Contains já escapam % e _ para você no EF Core 11, mas EF.Functions.Like não. Veja o SQL que o EF gera, um helper de escape reutilizável e a sobrecarga com escapeCharacter que faz tudo funcionar no SQL Server, no SQLite e no PostgreSQL.
- Coluna json nativa vs nvarchar(max) para armazenar JSON no SQL Server com EF Core 11
Use o tipo json nativo no SQL Server 2025 e no Azure SQL: com ele o EF Core 11 ganha JSON_CONTAINS, JSON_VALUE tipado, modify() in-place e índices JSON. Fique no nvarchar(max) para SQL Server 2019/2022, ferramentas legadas ou um schema que você precisa conseguir reverter.
- Lookup<TKey, TElement> vs Dictionary<TKey, List<TValue>> para chaves duplicadas em C#
Use ToLookup quando você agrupa uma vez e só lê: é imutável, retorna uma sequência vazia para chaves ausentes, aceita chaves null e mantém a ordem em que as chaves aparecem pela primeira vez. Use Dictionary<TKey, List<TValue>> quando os grupos mudam depois da construção ou atravessam uma fronteira JSON.
- Unions de C# no ASP.NET Core 11: corpos, SignalR e OpenAPI funcionam, query strings não
A equipe do ASP.NET Core mapeou por onde os tipos union do C# 15 passam no .NET 11: corpos de minimal APIs e MVC, o JsonHubProtocol do SignalR, Blazor e schemas anyOf do OpenAPI. Binding de rota, query, headers e formulários ainda não é suportado.
- SignalR no .NET 11 RC 1 troca um token prestes a expirar sem derrubar a conexão
As APIs de atualização de autenticação do SignalR estão finalizadas no .NET 11 RC 1, com callbacks renomeados em HubConnection, um cliente TypeScript e circuitos do Blazor Server que assumem o ClaimsPrincipal atualizado automaticamente.
- .NET 11 RC 1 permite enviar SIGTERM para um processo filho sem P/Invoke
Signal, WaitForExitStatus e ProcessExitStatus chegam diretamente em System.Diagnostics.Process no .NET 11 RC 1, então encerrar um processo filho de forma limpa não exige mais um P/Invoke para kill nem um desvio por SafeProcessHandle.
- Como consumir uma resposta ProblemDetails do RFC 9457 a partir de um HttpClient tipado sem referenciar o ASP.NET Core
A BCL não tem um tipo ProblemDetails, e adicionar um FrameworkReference para Microsoft.AspNetCore.App faz seu cliente se recusar a iniciar em um contêiner que só traz o runtime. Aqui está o modelo de 20 linhas que resolve, o DelegatingHandler que transforma problem+json em uma exceção tipada, e o mito do content-type que quase toda resposta ainda repete.
- Como encontrar os manipuladores async void que causam ANR em um app Android do .NET MAUI
O Play Console diz que sua taxa de ANR passou de 0.47% e entrega uma stack trace nativa cheia de frames de libcoreclr.so. Veja como sair dessa trace inútil e chegar ao manipulador de evento async void exato que travou a thread principal, usando um printer de Looper, um wrapper de SynchronizationContext que nomeia a máquina de estados e o dotnet-trace via dsrouter.
- Como usar bloqueio pessimista com UPDLOCK e SELECT ... FOR UPDATE no EF Core 11
O EF Core 11 continua sem uma API de bloqueio. Veja como obter um bloqueio de linha real com FromSql: WITH (UPDLOCK, ROWLOCK) no SQL Server, FOR UPDATE no PostgreSQL, a armadilha da subconsulta que amplia o bloqueio em silêncio, NOWAIT e SKIP LOCKED, retentativas de deadlock e o que fazer quando a linha ainda não existe.
- Como escrever um value converter do EF Core 11 que mapeia um null do banco de dados para um valor não nulo no código
Por padrão, o EF Core nunca passa null para um value converter. Aqui está o construtor interno convertsNulls que muda isso, a chamada IsRequired(false) da qual ele depende, por que não funciona com enums e outros tipos de valor, a armadilha WHERE col = NULL que ele cria, e os dois padrões que resolvem o problema sem usar uma API interna.
- O que é um modo de renderização no Blazor e qual deles executa meu componente?
Um modo de renderização decide onde um componente Razor executa e se ele é interativo. Estes são os quatro modos do .NET 11, as regras de propagação que decidem o que seu componente herda, e as propriedades RendererInfo e AssignedRenderMode que dizem em tempo de execução qual delas venceu.
- O que é um interceptor do EF Core e quando você precisa de um?
Um interceptor do EF Core é uma classe que o EF chama antes e depois de operações como executar um comando ou SaveChanges, e que pode modificá-las ou suprimi-las, não apenas observá-las. Aqui estão os sete pontos de interceptação do EF Core 11, as regras de registro e ciclo de vida, e os casos em que um filtro de consulta ou log é a resposta melhor.
- Migre um app .NET MAUI para Android para o nível de API 36
O Google Play passou a exigir o nível de API alvo 36 desde 2026-08-31, com prorrogações até 2026-11-01. Este é o caminho completo no .NET MAUI de net9.0-android até a API 36: a mudança de target framework, o uses-sdk fixo que silenciosamente te prende no nível antigo, o edge-to-edge sem opção de exclusão, o gesto de voltar preditivo e as regras de telas grandes.
- O que é a flag W^X no .NET e o Native AOT precisa dela?
W^X (write xor execute) é a regra de que nenhuma página de memória seja gravável e executável ao mesmo tempo. No .NET é a opção DOTNET_EnableWriteXorExecute, ligada por padrão desde o .NET 7, e existe inteiramente para o JIT. O Native AOT nunca a lê. Veja como o runtime a implementa, quanto ela custa e quando desligá-la é uma correção legítima.
- Migre um app Android do .NET MAUI de Mono para CoreCLR no .NET 11
Uma migração passo a passo de Mono para CoreCLR no .NET MAUI para Android: o piso da API 24, as propriedades de MSBuild exclusivas do Mono que agora quebram sua build, por que seu APK cresceu, como perfilar a regressão de inicialização com dotnet-dsrouter e dotnet-trace, e como é um rollback de verdade agora que o caminho do Mono acabou.
- Migrar do VSTest para o Microsoft.Testing.Platform no SDK do .NET 11
Uma migração passo a passo do VSTest para o Microsoft.Testing.Platform 2.3.3: o opt-in de OutputType Exe, a troca de runner no global.json, loggers virando reporters, .runsettings virando testconfig.json e os códigos de saída que deixam vermelho um job de CI que estava verde.
- Migrar para longe do BinaryFormatter depois da remoção no .NET moderno
A implementação do BinaryFormatter foi removida no .NET 9 e continua lançando PlatformNotSupportedException no .NET 10 e no .NET 11: como escolher um serializador substituto, ler blobs NRBF já persistidos com o NrbfDecoder e o que quebra em WinForms, WPF e ResX.
- Dependente de framework vs autocontido vs Native AOT para uma imagem de contêiner do .NET 11
Dependente de framework sobre uma imagem aspnet chiseled é o padrão certo para um serviço ASP.NET Core no .NET 11, porque a camada do runtime é compartilhada entre serviços e uma CVE do runtime é corrigida trocando a imagem base. Autocontido com trimming e Native AOT compram uma imagem de 2x a 5x menor e uma inicialização a frio bem mais rápida, e custam isso. Tamanhos publicados reais, a conta das camadas compartilhadas e o bug de inferência de imagem base do .NET 11 que quebra o caminho AOT.
- Migrar um projeto de testes do xUnit v2 para o xUnit v3 (de 2.9.3 para 4.0.0)
Migração passo a passo do xunit 2.9.3 para o xunit.v3 4.0.0: troca de pacotes, a mudança de OutputType para Exe, IAsyncLifetime retornando ValueTask, a remoção de Xunit.Abstractions e a sintaxe de filtro do CI que para de casar silenciosamente.
- Retornar um Task diretamente vs repassar com async/await em um método de repositório em C#: qual usar?
Omitir async/await em um método de repasse de repositório economiza cerca de 6 ns e 72 bytes, e custa um quadro de pilha, a semântica de try/catch e o descarte seguro de recursos. Mantenha return await, a menos que o método seja um repasse puro em um caminho quente medido.
2026 / 08
- Fix: 23505: duplicate key value violates unique constraint em um insert concorrente do EF Core
O verificar-depois-inserir do seu handler não é atômico. Capture PostgresException com SqlState 23505, ou colapse tudo em uma única instrução INSERT ... ON CONFLICT. EnableRetryOnFailure não vai ajudar.
- Correção: CREATE DATABASE permission denied in database 'master' ao rodar dotnet ef database update
O Migrate() do EF Core sempre verifica se o banco de dados existe e o cria se não existir, a partir de uma conexão com master fixa no código. Conceda CREATE ANY DATABASE, corrija o acesso do login ao banco existente, ou gere um script SQL idempotente.
- Fix: Doesn't support required ABI ao instalar um app .NET MAUI para Android
O APK não contém nenhuma biblioteca nativa para a CPU do dispositivo. Desde o .NET 9 os RuntimeIdentifiers padrão do Android são apenas de 64 bits, então a correção é definir RuntimeIdentifiers explicitamente. Cobre ADB0020, XA0036, NETSDK1083, o mapeamento de ABI para RID, o texto do Play Console e por que o trecho de quatro RIDs que todo mundo copia quebra no .NET 11.
- Correção: failed to resolve source metadata for mcr.microsoft.com/dotnet/aspnet
O BuildKit não consegue ler o manifesto da sua imagem base. Verifique se a tag existe, conserte o credential helper do Docker, libere os dois endpoints do MCR e faça pull antecipado para builds offline.
- Aspire 13.5 coloca um terminal de verdade dentro do dashboard
WithTerminal() dá a um recurso uma sessão PTY interativa na qual você pode digitar pelo dashboard ou à qual pode se conectar pelo seu próprio shell. É experimental, desanexa o depurador e a opção Shell contra a qual você talvez tenha escrito código não existe mais.
- ASP.NET Core para de transformar 413 em 500 no UseExceptionHandler
Um PR integrado à main do dotnet/aspnetcore em 2026-08-19 faz o ExceptionHandlerMiddleware respeitar BadHttpRequestException.StatusCode em vez de sobrescrevê-lo com 500.
- Correção: [FromForm] Dictionary<string, string> é sempre null em uma minimal API
Um Dictionary com [FromForm] em uma minimal API faz binding com prefixo vazio: as chaves do formulário precisam ser [key], não metadata[key]. Envolva em uma classe para manter nomes legíveis.
- Correção: não é possível gerar OpenAPI 3.0 após atualizar o Swashbuckle.AspNetCore para a v9
Swashbuckle 8 e versões posteriores emitem openapi 3.0.4, não 3.0.1, e não existe um OpenApiSpecVersion para versões de patch. Por que mudou e quatro formas de fixar a string que sua ferramenta espera.
- Correção: Swagger UI mostra Unable to render this definition após atualizar para .NET 11
O ASP.NET Core 11 emite openapi 3.2.0 por padrão e o Swagger UI abaixo de 10.1.5 o rejeita. Atualize Swashbuckle.AspNetCore.SwaggerUI ou fixe OpenApiVersion em OpenApi3_1.
- O servidor do MSBuild vem ligado por padrão no .NET 11 Preview 7
O Preview 7 muda o servidor do MSBuild de opcional para ligado por padrão, então chamadas seguidas de dotnet build e dotnet test reaproveitam um processo de trabalho já aquecido. Veja o que mudou, como desativar e como comprovar que o servidor realmente entrou em ação.
- Como gerar uma chave primária a partir de uma sequência do banco de dados no insert no EF Core 11
Tire uma chave do IDENTITY e coloque em uma sequência do SQL Server no EF Core 11 com UseSequence: o SQL exato que o EF emite, por que valores de chave explícitos de repente funcionam sem IDENTITY_INSERT, a sequência bigint alimentando uma coluna int e as lacunas que você precisa considerar no design.
- Como baixar um arquivo a partir de um componente Blazor sem interop com JavaScript
Dispense o módulo JS downloadFileFromStream. Renderize uma âncora com o atributo download apontando para um endpoint de minimal API que devolve TypedResults.File, ou envie por POST um formulário HTML simples com um AntiforgeryToken. Cobre por que o atributo download é o que impede a navegação aprimorada do Blazor de engolir o clique, por que data-enhance descarta o arquivo silenciosamente e a armadilha de cookie versus bearer.
- Como usar IDbContextFactory<T> a partir de um serviço singleton no Blazor
Um singleton não pode injetar um DbContext, mas pode injetar IDbContextFactory<T>, porque AddDbContextFactory registra a fábrica como singleton por padrão. Crie e descarte um contexto por chamada, nunca guarde a instância.
- System.IO.Compression finalmente lê e escreve ZIPs criptografados no .NET 11 Preview 7
O .NET 11 Preview 7 adiciona entradas ZIP protegidas por senha ao System.IO.Compression, com suporte a AES-256, tipos de opções para operações em diretórios inteiros e um bug com arquivos vazios que já foi corrigido na main.
- Scalar vs Swagger UI para documentação OpenAPI no ASP.NET Core 11
O Scalar entrega 1,02 MiB de JavaScript comprimido com gzip e um construtor de requisições bem melhor. O Swagger UI entrega 514 KiB e renderiza OpenAPI 3.2, que é o que o .NET 11 agora emite por padrão. Payloads medidos, a lacuna do 3.2, roteamento por endpoints dos dois lados e os detalhes de autenticação que decidem.
- Zstandard vs Brotli vs Gzip para compressão de respostas no .NET 11
Zstandard é o padrão certo para respostas dinâmicas de API no .NET 11, mas não na qualidade com que o provider do ASP.NET Core vem configurado. Benchmarks sobre payloads JSON reais mostrando por que a qualidade 1 supera a qualidade 3 padrão tanto em tamanho quanto em CPU, quando o Brotli ainda vence e por que o Gzip sobrevive apenas como alternativa de compatibilidade.
- Os circuitos do Blazor Server agora se pausam sozinhos quando a aba fica ociosa
O .NET 11 Preview 7 adiciona um pacote opcional que pausa os circuitos interativos de Server quando a aba do navegador está oculta, liberando memória e conexões SignalR presas a usuários que não estão realmente ali.
- Correção: 404 Not Found para blazor.server.js depois de instalar um novo SDK do .NET
blazor.server.js retorna 404 no .NET 10 porque o script deixou de ser um recurso embutido. Adicione RequiresAspNetWebAssets ao projeto host, ou garanta que ele tenha um arquivo .razor.
- C# 15 ganha break e continue com rótulo no .NET 11 Preview 7
break e continue com rótulo chegaram na seção de C# do .NET 11 Preview 7. Agora você pode colocar um rótulo em um laço e saltar direto para ele, o que aposenta as gambiarras com flag booleana e goto em laços aninhados.
- Correção: dotnet tool install --global dotnet-ef lança um erro
Todas as formas pelas quais dotnet tool install --global dotnet-ef falha no SDK do .NET 10, com a mensagem exata e o código de saída de cada uma: já instalado, versão não encontrada, downgrade bloqueado, conflito de shim, feed do NuGet fora do ar e a incompatibilidade de runtime que só quebra depois que a instalação dá certo.
- Correção: The 'interceptors' feature is not enabled in this namespace
CS9137 vem do gerador de código-fonte do Microsoft.AspNetCore.OpenApi. Adicione InterceptorsNamespaces a todo projeto que chama AddOpenApi, não só ao que tem o PackageReference.
- Correção: The type or namespace name 'OpenApiReference' could not be found
OpenApiReference foi removido no Microsoft.OpenApi 2.0. Trocar o using para Microsoft.OpenApi não basta: substitua cada uso por uma referência tipada como OpenApiSchemaReference.
- Como chamar uma stored procedure e mapear seus resultados no EF Core 11
Use FromSql em um DbSet quando a procedure retorna linhas completas de uma entidade, Database.SqlQuery<T> quando retorna uma projeção, e ExecuteSql quando não retorna nada. Nunca encadeie um operador LINQ sobre um EXEC, e nunca leia um parâmetro de saída antes de o leitor ter sido liberado.
- Como personalizar a serialização do System.Text.Json gerada por código-fonte com um modificador de type info resolver
Anexe um modificador de JsonTypeInfo a um JsonSerializerContext gerado por código-fonte no .NET 11: por que new MyContext(options) o descarta silenciosamente, a configuração com WithAddedModifier que funciona, o caminho rápido que você perde (medido) e a armadilha da política de nomes que anula o modificador.
- Como sobrescrever o manipulador de resiliência padrão que o Aspire registra
O AddServiceDefaults do Aspire aplica um manipulador de resiliência padrão a todo HttpClient. Chamar AddStandardResilienceHandler de novo empilha um segundo manipulador em vez de substituí-lo. Aqui estão os três caminhos reais de sobrescrita, o nome de opções -standard que ninguém documenta e o timeout infinito que você herda se apenas removê-lo.
- Como renomear uma tabela em uma migração do EF Core 11 sem perder dados
O EF Core gera RenameTable quando você muda o nome da tabela, mas DropTable mais CreateTable quando você renomeia a classe de entidade. Veja como distinguir os dois casos, o truque do ToTable que torna a renomeação de uma classe gratuita, e o bug de renomeação de colunas que troca seus dados em silêncio.
- Como executar um app C# baseado em arquivo com `dotnet run app.cs` no .NET 11
Guia completo dos apps C# baseados em arquivo: executar um único arquivo .cs com dotnet run, as diretivas #:package, #:sdk, #:property, #:project e #:include, scripts multiarquivo com #:ref, tratamento de argumentos e stdin, o cache de build, publicação com native AOT, empacotamento como ferramenta do dotnet e dotnet project convert quando o script cresce demais.
- Como servir documentação OpenAPI com Scalar em vez do Swagger UI no ASP.NET Core 11
Substitua UseSwaggerUI por MapScalarApiReference no ASP.NET Core 11: roteamento, múltiplos documentos, autenticação pré-preenchida, controle em produção, recursos sem CDN e as extensões OpenAPI exclusivas do Scalar.
- Correção: Attempting to reconnect to the server depois que um circuito do Blazor Server cai
O modal de reconexão indica que o circuito do SignalR caiu, não que a aplicação quebrou. Descubra se a tentativa terminou em failed ou rejected e corrija a afinidade de sessão, a janela de retenção de 3 minutos, o limite de 32 KB ou persista o estado com [PersistentState].
- gRPC vs REST vs SignalR para chamadas entre serviços no .NET 11
Para chamadas internas entre serviços no .NET 11, escolha gRPC por padrão quando você controla as duas pontas do contrato e a chamada é ponto a ponto. Use REST com JSON quando algo que você não controla precisa chamar o serviço. SignalR não é um transporte RPC entre serviços: recorra a ele apenas quando um produtor precisa distribuir uma mensagem para muitos consumidores de longa duração.
- Correção: AggregateException "One or more errors occurred" ao aguardar Task.WhenAll em C#
await Task.WhenAll relança apenas uma das falhas. Guarde a task do WhenAll em uma variável e leia Exception.InnerExceptions para ver todos os erros, e não apenas um.
- Correção: HTTP Error 500.30 - ASP.NET Core app failed to start após implantar no IIS
500.30 significa que sua aplicação lançou uma exceção durante a inicialização dentro do w3wp.exe. A exceção real já está no log de eventos de Aplicativo do Windows sob IIS AspNetCore Module V2. Leia isso primeiro e depois ordene a correção: framework compartilhado ausente, incompatibilidade x86/x64 do pool de aplicativos, configuração ausente ou permissões do pool.
- Como implementar concorrência otimista com um token rowversion no EF Core 11
Adicione um token de concorrência rowversion no EF Core 11: a configuração com [Timestamp] e IsRowVersion, o SQL que o EF realmente emite, como capturar DbUpdateConcurrencyException, banco vence vs cliente vence vs mesclagem, APIs desconectadas com ETags e as cinco armadilhas que desativam tudo silenciosamente.
- Como salvar um enum como string no EF Core 11 com um value converter
Salve enums de C# como strings legíveis em vez de ints no EF Core 11: HasConversion, configuração em massa para todos os enums, a armadilha do nvarchar(max), o problema da ordenação e como migrar uma coluna int existente.
- Como validar opções na inicialização com IValidateOptions<T> no .NET 11
Implemente IValidateOptions<T>, registre na DI e encadeie ValidateOnStart para que um appsettings.json ruim derrube o processo em vez da primeira requisição que tocar nele. Cobre a sobrecarga Validate<TValidator>() do .NET 11, validação assíncrona com IAsyncValidateOptions<T> e os três lugares onde ValidateOnStart silenciosamente não faz nada.
- Como configurar o Kestrel para servir HTTP/3 no ASP.NET Core 11
Um guia completo para habilitar HTTP/3 no Kestrel no ASP.NET Core 11: a configuração de endpoint com HttpProtocols.Http1AndHttp2AndHttp3, os requisitos de plataforma do MsQuic no Windows, Linux e macOS, por que a primeira requisição nunca é HTTP/3, como verificar com HttpClient e middleware, o ajuste de QuicTransportOptions e as armadilhas de firewall e proxy que fazem tudo cair silenciosamente.
- Como substituir new Regex(...) pelo gerador de código-fonte [GeneratedRegex] no .NET 11
Um guia completo para converter new Regex(pattern, RegexOptions.Compiled) em [GeneratedRegex] no .NET 11: a reescrita mecânica, métodos parciais versus propriedades parciais, números medidos de inicialização e throughput, os diagnósticos SYSLIB1040-1045 e os dois padrões em que o gerador silenciosamente recai para um Regex em cache.
- Como executar trabalho intensivo de CPU em um app Blazor WebAssembly com Web Workers no .NET 11
Guia completo para tirar o trabalho intensivo de CPU da thread de UI do Blazor WebAssembly no .NET 11: por que Task.Run não ajuda, o novo template blazorwebworker, a API WebWorkerClient com cancelamento e timeouts, os limites de marshalling do JSExport e o custo do segundo runtime que você paga por worker.
- IOptions<T> vs IOptionsSnapshot<T> vs IOptionsMonitor<T> no .NET 11
Use IOptions<T> por padrão. Use IOptionsMonitor<T> quando um singleton precisa enxergar recargas de configuração, e IOptionsSnapshot<T> apenas quando um consumidor scoped precisa de um valor estável durante uma requisição. O eixo que decide é o tempo de vida do consumidor, não o formato das configurações.
2026 / 07
- Correção: JavaScript interop calls cannot be issued at this time (prerender do Blazor)
O prerender executa seu componente no servidor sem navegador, então IJSRuntime lança exceção. Mova a chamada para OnAfterRenderAsync, condicione com RendererInfo.IsInteractive ou desative o prerender.
- Correção: Your startup project doesn't reference Microsoft.EntityFrameworkCore.Design
Adicione Microsoft.EntityFrameworkCore.Design ao projeto de inicialização que o dotnet ef compila, não ao projeto que contém seu DbContext, e passe -s em soluções em camadas.
- Correção: Reflection-based serialization has been disabled for this application
Essa InvalidOperationException significa que PublishTrimmed ou PublishAot mudaram JsonSerializerIsReflectionEnabledByDefault para false. Corrija com um JsonSerializerContext gerado.
- Correção: "The model for context 'X' has pending changes" no EF Core 11
O EF Core lança PendingModelChangesWarning quando seu modelo não bate mais com o último snapshot de migração. Adicione a migração ou corrija o falso positivo.
- Como aplicar migrações do EF Core 11 em produção com dotnet ef migrations bundle
Um guia completo para implantar mudanças de esquema do EF Core 11 com bundles de migração: compilar o efbundle no CI, a armadilha do appsettings.json com strings de conexão nomeadas, bundles self-contained e o RID musl do Alpine, o bloqueio de migração desde o EF Core 9, reverter com uma migração alvo e por que transações por migração não salvam você no MySQL.
- Como usar parâmetros de rota do Shell e query properties para navegação no .NET MAUI 11
Guia completo para passar dados pela navegação do Shell no .NET MAUI 11: registrar rotas globais, parâmetros de consulta do tipo string, QueryPropertyAttribute versus IQueryAttributable, a assimetria de decodificação de URL entre os dois, ShellNavigationQueryParameters de uso único versus a sobrecarga com IDictionary que retém memória, passar dados de volta com ..?key=value, e por que QueryPropertyAttribute não é seguro para trimming.
- Como diagnosticar um vazamento de memória gerenciada com dotnet-gcdump e dotnet-dump
Um fluxo de trabalho completo para encontrar um vazamento de memória gerenciada no .NET 11: confirme o crescimento com dotnet-counters, tire dois gcdumps e compare-os, depois colete um dump e use dumpheap, gcroot e objsize no dotnet-dump analyze para descobrir o que ainda está segurando a referência.
- Como publicar um aplicativo .NET 11 como imagem de contêiner com dotnet publish /t:PublishContainer
Guia completo para construir imagens de contêiner a partir de um aplicativo .NET 11 sem Dockerfile: o target PublishContainer, ContainerRepository e ContainerImageTags, a escolha da imagem base com ContainerBaseImage e ContainerFamily, o push para um registro e como a autenticação é resolvida, índices de imagem OCI multiarquitetura, o usuário não root padrão, o controle do entrypoint, a saída em tarball para scanners e os casos em que você ainda precisa de um Dockerfile.
- Como serializar uma hierarquia de tipos polimórfica com JsonDerivedType no System.Text.Json
Guia completo de JSON polimórfico no .NET 11: JsonDerivedType e JsonPolymorphic, por que o tipo declarado decide tudo, a regra de ordem do $type, todas as exceções que o recurso lança, o modelo de contratos para tipos que não são seus e o que o ASP.NET Core emite no OpenAPI.
- Como adicionar o Aspire a uma solução ASP.NET Core existente sem reestruturá-la
Adicione o Aspire 13.4 a uma solução ASP.NET Core legada com dois projetos novos e três linhas por serviço: aspire init, ligação do AppHost com AddProject e WithReference, mantendo seu launchSettings.json e suas connection strings, e as armadilhas de resiliência, endpoints de saúde e proxy que aparecem no primeiro dia.
- Como testar código dependente de tempo com TimeProvider e FakeTimeProvider no .NET 11
Substitua DateTime.UtcNow, Stopwatch e Task.Delay por System.TimeProvider para que os testes controlem o relógio: registro na injeção de dependência, FakeTimeProvider.Advance e SetUtcNow, testes de timeouts e de um BackgroundService baseado em PeriodicTimer, além das armadilhas do Advance com continuações e do xUnit v2.
- Como escrever testes de integração com WebApplicationFactory<T> no ASP.NET Core 11
Guia completo do WebApplicationFactory<TEntryPoint> no ASP.NET Core 11: como tornar o ponto de entrada Program acessível, ConfigureTestServices versus ConfigureWebHost, substituir o registro do EF Core via IDbContextOptionsConfiguration, o novo hook ConfigureHostApplicationBuilder do .NET 11 preview 6, autenticação simulada, WebApplicationFactoryClientOptions e UseKestrel quando você precisa de uma porta real.
- Migrar de chamadas bloqueantes .Result/.Wait() para async em toda a cadeia em uma base de código C# legada
Um manual em etapas para remover sync-over-async de uma base de código .NET existente: inventariar com analisadores, medir a inanição do ThreadPool, converter uma cadeia de chamadas por vez e reduzir a contagem a zero no .NET 11.
- Migre da interpolação de strings no ILogger para templates de mensagem de log estruturado no .NET 11
Guia passo a passo para converter chamadas de ILogger com interpolação $ em templates de mensagem e métodos gerados com [LoggerMessage] no .NET 11: o que quebra, como varrer um código base com CA2254, como verificar o estado JSON e como reverter.
- Filtros de endpoint vs. middleware no ASP.NET Core 11: qual você deve usar?
Um guia de decisão para o ASP.NET Core 11: o middleware roda em cada requisição antes de o seu handler fazer o binding, os filtros de endpoint rodam apenas para o endpoint correspondente, depois do binding, e podem ver os argumentos tipados. Inclui uma tabela comparativa, cenários de quando escolher cada um, as regras de ordem e os detalhes que forçam a escolha.
- Migrar IOperationFilter e ISchemaFilter do Swashbuckle para transformadores de OpenAPI no .NET 11
Uma referência de migração filtro a filtro para mover o código de IOperationFilter e ISchemaFilter do Swashbuckle para os transformadores de operação e esquema integrados no .NET 11, com o mapeamento dos objetos de contexto e as mudanças do Microsoft.OpenApi v2 que quebram a compilação.
- .Result vs .Wait() vs GetAwaiter().GetResult() vs await em C#: qual você deve usar?
await é a resposta certa quase sempre. Quando você realmente precisa bloquear, GetAwaiter().GetResult() supera .Result e .Wait() porque lança a exceção original. Uma matriz de decisão para .NET 11 e C# 14.
- Clientes SignalR finalmente podem cancelar um método de hub em execução no .NET 11 Preview 6
Cancelar o CancellationToken que você passa para InvokeAsync agora chega ao servidor e cancela o método de hub. Isso encerra uma solicitação do SignalR aberta desde 2019.
- Typed results (Results<>) vs IResult vs IActionResult no ASP.NET Core 11
No ASP.NET Core 11, retorne Results<T1, TN> com TypedResults para minimal APIs e ActionResult<T> para controllers. Trate IResult puro e IActionResult puro como saídas de emergência: eles compilam para qualquer resposta, mas não descrevem nada ao OpenAPI, então você paga por isso em atributos ProducesResponseType escritos à mão.
- WebApplication.CreateBuilder vs CreateSlimBuilder vs CreateEmptyBuilder no ASP.NET Core 11
Use CreateBuilder para uma aplicação normal, CreateSlimBuilder quando você publica com trimming ou Native AOT atrás de um proxy TLS, e CreateEmptyBuilder apenas quando você quer registrar cada serviço por conta própria. Aqui está a matriz de recursos e as pegadinhas que forçam a decisão.
- Complex types vs entidades owned no EF Core 11: qual você deve escolher?
No EF Core 11, prefira complex types para objetos de valor e recorra a entidades owned apenas quando precisar de uma tabela separada ou de uma coleção mapeada para suas próprias linhas.
- Output caching vs response caching no ASP.NET Core 11: qual você deve usar?
Output caching é o padrão certo para quase todo app server-side no ASP.NET Core 11. Response caching só vence quando seu objetivo é orientar caches de navegador e proxy por meio de cabeçalhos HTTP. Aqui está a decisão, com uma matriz de recursos e as pegadinhas que forçam a escolha.
- TPH vs TPT vs TPC para mapeamento de herança no EF Core 11: qual você deve escolher?
No EF Core 11, use TPH por padrao para quase toda hierarquia, recorra ao TPC apenas quando voce consulta quase sempre um unico tipo folha e um benchmark prova que ele vence, e use TPT somente quando uma restricao externa obrigar.
- Correção: CS4014 "Because this call is not awaited, execution of the current method continues" em C#
CS4014 significa que você chamou um método que retorna Task sem aguardá-lo. Adicione await, ou descarte com _ = se o fire-and-forget for intencional, e trate as exceções.
- Solução: System.InvalidOperationException: Sequence contains no elements
Essa exceção significa que você chamou .First() ou .Single() em uma sequência vazia. Use FirstOrDefault/SingleOrDefault e verifique o null, proteja a consulta ou corrija por que a fonte está vazia.
- System.Text.Json aprende a serializar os tipos union de C# no .NET 11 Preview 6
Como o System.Text.Json no .NET 11 Preview 6 serializa os novos tipos union de C# escrevendo o caso ativo, e as APIs JsonUnionAttribute e de classificador de tipos que resolvem os casos ambíguos.
- A validação assíncrona chega às Minimal APIs com o .NET 11 Preview 6
O Preview 6 adiciona AsyncValidationAttribute e IAsyncValidatableObject para que as regras de DataAnnotations consultem o banco de dados antes de o seu endpoint rodar, sem bloquear uma thread.
- Solução: CS8618 "Non-nullable property must contain a non-null value when exiting constructor" em C#
CS8618 significa que um campo ou propriedade não anulável não foi inicializado antes de o construtor terminar. Atribua no construtor, dê um valor padrão, marque como required ou torne-o anulável.
- Solução: deadlock ao chamar .Result ou .Wait() em um método async em C#
Bloquear uma Task async com .Result ou .Wait() causa deadlock quando existe um SynchronizationContext presente. Aqui explico por que trava e como resolver no .NET 11 e C# 14.
- Como adicionar um endpoint de health check a uma minimal API no ASP.NET Core 11
Um guia completo e funcional de health checks em uma minimal API do ASP.NET Core 11: AddHealthChecks e MapHealthChecks, classes IHealthCheck personalizadas que retornam Healthy/Degraded/Unhealthy, a sonda de EF Core AddDbContextCheck, endpoints de liveness e readiness baseados em tags para Kubernetes, um ResponseWriter JSON, ResultStatusCodes, como proteger o endpoint com RequireAuthorization e RequireHost, e como enviar resultados com IHealthCheckPublisher.
- Como adicionar um endpoint filter a uma minimal API no ASP.NET Core 11
Um guia completo e funcional de endpoint filters em uma minimal API do ASP.NET Core 11: AddEndpointFilter com um delegate em linha, classes IEndpointFilter com injeção de dependência, GetArgument e a lista Arguments, curto-circuito com Results.Problem, ordem FIFO/FILO entre vários filtros, filtros no nível do grupo com MapGroup e AddEndpointFilterFactory para filtros que dependem da assinatura.
- No mobile, MAUI é só CoreCLR no .NET 11 Preview 6: a saída de emergência do Mono acabou
O .NET 11 Preview 6 remove o caminho separado do Mono para MAUI no Android, iOS e Mac Catalyst. CoreCLR agora é o único runtime móvel, a saída de emergência UseMonoRuntime foi fechada e a GA está marcada para novembro de 2026.
- Os indexadores de extensão do C# 15 completam os membros de extensão no .NET 11 Preview 6
Os indexadores de extensão chegaram no .NET 11 Preview 6 e permitem adicionar acesso this[...] a tipos que você não controla. Eles completam a história dos membros de extensão que começou com métodos e propriedades no C# 14.
- ASP.NET Core 11 Preview 6 ativa a proteção CSRF automática
O Preview 6 rejeita por padrão as requisições entre origens não seguras do navegador, lendo o cabeçalho Sec-Fetch-Site em vez de um token antiforgery. Veja o que ele bloqueia e como excluir endpoints.
- Correção: "413 Request Entity Too Large" ao enviar um arquivo para um endpoint do ASP.NET Core
O Kestrel limita o corpo das requisições a 30.000.000 de bytes por padrão e devolve 413 quando você ultrapassa isso. Aumente MaxRequestBodySize globalmente, por endpoint ou no web.config atrás do IIS.
- Correção: System.InvalidOperationException: Headers are read-only, response has already started
Você definiu um header, um status code ou um content type depois que o corpo já foi liberado. Defina todos os headers antes da primeira escrita, ou proteja com HttpResponse.HasStarted e OnStarting.
- Solução: "The property could not be mapped, because it is not a supported primitive type or a valid entity type" no EF Core 11
O EF Core encontrou uma propriedade que não sabe armazenar. Mapeie como tipo complexo, converta com HasConversion, dê uma chave a ela ou ignore com [NotMapped].
- Como adicionar compressão de respostas a uma API do ASP.NET Core 11
Um guia completo da compressão de respostas no ASP.NET Core 11: AddResponseCompression e UseResponseCompression, o novo provedor Zstandard integrado ao lado de Brotli e Gzip, níveis de compressão, EnableForHttps e o risco de CRIME/BREACH, tipos MIME personalizados, a ordem do middleware e quando deixar o proxy reverso fazer isso.
- Como retornar uma união tipada Results<T1, T2> de um endpoint de minimal API no ASP.NET Core 11
Declare o tipo de retorno do handler como Results<Ok<T>, NotFound> e retorne TypedResults.Ok / TypedResults.NotFound: a união oferece verificação em tempo de compilação de que o handler só retorna o que declara, e ela se autodescreve ao OpenAPI para que você nunca escreva .Produces na mão. Cobre handlers assíncronos, o limite de seis tipos e testes no ASP.NET Core 11.
- Como configurar o mapeamento de herança tabela por hierarquia (TPH) no EF Core 11
TPH é a estratégia de herança padrão do EF Core: uma tabela, uma coluna discriminadora. Veja como configurar o discriminador, compartilhar colunas, lidar com propriedades derivadas anuláveis e os detalhes no EF Core 11.
- Como adicionar output caching a uma Minimal API no ASP.NET Core 11
Um guia completo e funcional de output caching em uma Minimal API do ASP.NET Core 11: AddOutputCache e UseOutputCache, CacheOutput em endpoints e MapGroup, políticas nomeadas e de base, Expire, VaryByQuery e VaryByHeader, remoção por tag com EvictByTagAsync, proteção contra cache stampede, revalidação com ETag e um armazenamento de apoio no Redis.
- Como personalizar o documento OpenAPI com AddOperationTransformer e AddSchemaTransformer no ASP.NET Core 11
Um mergulho profundo no pipeline de transformadores OpenAPI embutido no .NET 11: transformadores de operação versus de esquema, os objetos de contexto, a ordem de execução, transformadores ativados por DI e receitas para cabeçalhos, respostas, exemplos e ajustes por propriedade.
- Como mapear um tipo complexo em vez de uma entidade owned no EF Core 11
Entidades owned carregam uma chave oculta e identidade de referência que conflitam com value objects. Veja como mapear um value object como tipo complexo no EF Core 11, quando trocar e as armadilhas.
- .NET 11 Runtime Async abandona a flag EnablePreviewFeatures
Conforme as versoes preliminares do .NET 11 avancam para o lancamento de novembro, o Runtime Async se formou: projetos net11.0 sao ativados com uma unica propriedade do MSBuild, e as proprias bibliotecas do runtime agora sao compiladas com ele.
- O que é PGO no .NET e preciso ativar?
PGO (otimização guiada por perfil) permite que o JIT do .NET especialize o código quente para os tipos e ramos que sua carga de trabalho realmente executa. O Dynamic PGO está ligado por padrão desde o .NET 8, então no .NET 8 e versões posteriores você não precisa ativar. Aqui está o que ele faz, como ver o efeito e os casos raros em que você mexe no ajuste.
- O que é compilação em camadas e como raciocinar sobre ela?
A compilação em camadas permite que o JIT do .NET compile cada método duas vezes: primeiro rápido e sem otimização para colocar sua aplicação em execução, e depois de novo com otimizações completas quando o runtime sabe que um método é quente. Aqui você verá como o tier 0, o tier 1, a substituição na pilha e o Dynamic PGO se encaixam, e como observá-los e ajustá-los.
- Qual é a diferença entre dotnet build e dotnet publish?
dotnet build compila seu projeto para o ciclo de desenvolvimento interno e usa Debug por padrão. dotnet publish executa o target Publish do MSBuild, usa Release por padrão em net8.0 e versões posteriores, e empacota uma pasta pronta para implantação com os assets web, os runtimes autocontidos, o arquivo único, o trimming e o AOT já resolvidos. Aqui está exatamente o que cada um produz e quando usá-lo.
- Qual a diferença entre dotnet watch e dotnet run?
dotnet run compila seu projeto uma vez e o inicia. dotnet watch envolve o dotnet run em um observador de arquivos: ele reinicia ou aplica hot reload na app toda vez que você salva um arquivo fonte. Aqui está exatamente o que cada um faz, o que o dotnet watch define que o dotnet run não define, e quando usar cada um.
- Migrar uma minimal API de verificações de validação manuais para a validação integrada no ASP.NET Core 11
Guia passo a passo para substituir verificações manuais (if) nos handlers de uma minimal API do ASP.NET Core 11 pelo validador integrado baseado em DataAnnotations e geração de código-fonte: o que quebra, quais regras manuais dá para portar e quais não, e como verificar que o contrato 400 ProblemDetails continua idêntico.
- O que é código trim-safe e como eu escrevo isso?
Código trim-safe é código que o trimmer do .NET consegue provar estaticamente que é alcançável, então ele sobrevive quando o código não usado é removido de um app self-contained. Este é o guia prático: ligue o analisador, leve cada aviso IL2xxx a zero, anote a reflexão com DynamicallyAccessedMembers, propague RequiresUnreferencedCode para APIs públicas e substitua padrões não analisáveis por geradores de código-fonte.
- Correção: "415 Unsupported Media Type" de um endpoint de minimal API no ASP.NET Core 11
Uma minimal API retorna 415 quando o Content-Type da requisição não corresponde ao que o endpoint faz o binding. Envie Content-Type: application/json para um tipo vinculado ao corpo, ou use [FromForm] para formulários e uploads de arquivos.
- Correção: CS9035 "Required member 'X' must be set in the object initializer" em C#
CS9035 significa que um membro marcado como required não foi atribuído. Atribua-o no inicializador de objeto, ou adicione um construtor com [SetsRequiredMembers] que atribua cada membro required.
- Como personalizar respostas de erro de validação de minimal APIs com IProblemDetailsService no ASP.NET Core 11
Chame AddProblemDetails com um callback CustomizeProblemDetails para remodelar o 400 que a validação embutida de minimal APIs retorna no ASP.NET Core 11: adicione um traceId, reescreva o title, troque 400 por 422, ou assuma o controle total com um IProblemDetailsWriter personalizado.
- Como configurar autenticação JWT bearer em uma minimal API no ASP.NET Core 11
Uma configuração completa e funcional de autenticação JWT bearer em uma minimal API do ASP.NET Core 11: instalar o pacote, conectar AddAuthentication().AddJwtBearer(), emitir um token, proteger endpoints com RequireAuthorization, adicionar políticas de role e de claim, e testar tudo com dotnet user-jwts.
- Como propagar um CancellationToken por métodos async no .NET 11
Passe um CancellationToken de forma limpa por cada camada de uma cadeia de chamadas async no .NET 11: convenção do último parâmetro, valores padrão, tokens vinculados, RequestAborted do ASP.NET Core e o analisador CA2016 que detecta os que você esquece.
- Como definir um tempo limite em uma operação assíncrona com CancellationTokenSource.CancelAfter em C#
Use CancellationTokenSource.CancelAfter para aplicar um prazo em operações assíncronas no .NET 11: construtor vs CancelAfter, tokens vinculados, tratamento de exceções, Task.WaitAsync, TryReset para pooling e timeouts testáveis com TimeProvider.
2026 / 06
- Corrigir: FOREIGN KEY constraint failed ao excluir uma entidade no EF Core 11
O EF Core lança FOREIGN KEY constraint failed porque o pai ainda tem dependentes que o banco de dados se recusa a deixar órfãos. Carregue os filhos, torne o relacionamento opcional ou configure OnDelete.
- Corrigir: No service for type 'Microsoft.EntityFrameworkCore.DbContextOptions' has been registered
O EF Core lança isso quando AddDbContext nunca rodou, rodou depois de Build ou o construtor do contexto recebe o DbContextOptions errado. Registre antes de Build e use DbContextOptions<SeuContexto>.
- Corrigindo: 405 Method Not Allowed em vez de 401 com JWT bearer no ASP.NET Core
Um endpoint protegido retornando 405 em vez de 401 quase sempre significa que o roteamento rejeitou o verbo HTTP antes da autenticação rodar, ou que um esquema de cookie roubou o desafio. Veja como identificar qual dos dois é.
- Por que seu JWT no ASP.NET Core retorna 401 mesmo com um token válido
Um token válido que ainda retorna 401 quase sempre significa que o handler bearer nunca rodou ou rodou sob o esquema errado. Verifique a ordem do middleware, o esquema padrão, o nome do esquema e se o cabeçalho sequer chegou ao handler.
- Correção: The seed entity for entity type 'X' cannot be added because a non-zero value is required for property 'Id'
O HasData semeia uma entidade com chave gerada pelo banco mas sem valor explícito. Dê a cada linha um Id estável diferente de zero, ou use UseSeeding para chaves geradas.
- Como declarar propriedades de extensão em C# 14
As propriedades de extensão chegam no C# 14 por meio do novo bloco extension. Declare propriedades de extensão somente leitura, com setter, estáticas e genéricas, por que propriedades automáticas são rejeitadas e como o compilador as converte em acessadores get_/set_.
- .NET 11 Preview 5 permite que file-based apps referenciem umas às outras com `#:ref`
.NET 11 Preview 5 adiciona a diretiva #:ref para que um script dotnet run possa referenciar outra file-based app como biblioteca, com referências transitivas e sem arquivo de projeto.
- Como fazer paginação por keyset (cursor) no EF Core 11
Substitua Skip/Take por uma cláusula WHERE que avança além da última linha que você viu. Ordene por uma chave totalmente única, carregue os valores da última linha como um cursor, e o EF Core 11 transforma a próxima página em um index seek em vez de um scan com OFFSET.
- Como mapear e consultar colunas JSON no EF Core 11
Mapeie um tipo aninhado para uma única coluna JSON com ComplexProperty(...).ToJson(), deixe o EF Core 11 armazená-lo no tipo json nativo do SQL Server 2025 e depois consulte-o com LINQ que se traduz em JSON_VALUE, JSON_CONTAINS e JSON_PATH_EXISTS.
- Como registrar e resolver serviços com chave na injeção de dependência do .NET 11
Registre várias implementações do mesmo tipo de serviço sob uma chave com AddKeyedSingleton/Scoped/Transient e depois resolva-as com [FromKeyedServices], GetRequiredKeyedService ou KeyedService.AnyKey. Os registros com chave e sem chave são tabelas separadas, e esse é o detalhe que pega quase todo mundo.
- Como validar o emissor, a audiência e a validade de um JWT no ASP.NET Core 11
Um guia completo de TokenValidationParameters no ASP.NET Core 11: como ValidateIssuer, ValidateAudience e ValidateLifetime funcionam, quais são de fato os valores padrão, por que Authority configura automaticamente o emissor e as chaves de assinatura, a armadilha dos 5 minutos de ClockSkew e como ler os códigos de erro IDX quando um token aparentemente válido é rejeitado.
- Hierarquias de classes fechadas no C# 15: a palavra-chave closed no .NET 11 Preview 5
O C# 15 adiciona o modificador closed no .NET 11 Preview 5, dando as hierarquias de classes exaustividade em tempo de compilacao nas expressoes switch. Veja como funciona e o unico detalhe a observar.
- Como configurar CORS para uma API protegida com JWT no ASP.NET Core 11
Um guia completo de CORS para uma API com token bearer no ASP.NET Core 11: a ordem correta do UseCors em relação à autenticação, por que um token bearer no cabeçalho Authorization não é uma credencial de CORS, por que AllowAnyHeader funciona mas um curinga manual não cobre Authorization, e como evitar que o preflight falhe.
- O que é o atributo DynamicallyAccessedMembers?
DynamicallyAccessedMembers informa ao trimmer do .NET e ao compilador AOT quais membros de um Type você acessa por reflexão, para que sejam mantidos em vez de removidos pelo trimming. Ele transforma uma MissingMethodException silenciosa em runtime em um aviso IL2070 em tempo de build. Veja o que o atributo faz, como funciona a análise de fluxo de dados por trás dele e como anotar corretamente parâmetros, campos e parâmetros de tipo genéricos.
- O que é ValueTask<T> e quando vale a pena?
ValueTask e ValueTask<T> são structs que permitem que um método assíncrono retorne um resultado sem alocar um Task no heap quando ele completa de forma síncrona. O ganho é uma alocação a menos em hot paths que normalmente terminam sem aguardar. O custo é um contrato rígido de aguardar-apenas-uma-vez. Aqui está o que esse tipo realmente é, como funciona e o conjunto restrito de casos em que ele se justifica.
- O que é um gerador de código-fonte e quando eu preciso de um?
Um guia em linguagem clara sobre geradores de código-fonte em C#: o que eles realmente fazem, como funciona o pipeline do IIncrementalGenerator, quando eles superam a reflexão ou o T4, e os casos em que você não deve recorrer a um. Com exemplos executáveis em .NET 11 e C# 14.
- O que é IAsyncEnumerable<T> e quando você deve usá-lo?
IAsyncEnumerable<T> é a interface para fluxos assíncronos: uma sequência cujos elementos chegam ao longo do tempo e onde cada um pode exigir um await. Veja o que ele realmente é, como await foreach e yield o impulsionam, e a regra para saber quando escolhê-lo em vez de Task<List<T>>.
- O que é Native AOT e quanto ele custa para você?
Native AOT compila sua app .NET em um único binário nativo autônomo sem JIT, comprando inicialização rápida e baixo consumo de memória. O preço é uma cadeia de ferramentas C em tempo de compilação, builds mais lentos, builds por RID, sem reflexão nem Reflection.Emit, trimming obrigatório e sem Dynamic PGO. Aqui está o balanço completo.
- Blazor static SSR ganha [SupplyParameterFromSession] no .NET 11 Preview 5
Ler o estado de sessão no Blazor renderizado no servidor estático significava acessar HttpContext.Session e serializar na mão. O .NET 11 Preview 5 adiciona [SupplyParameterFromSession] para vincular uma propriedade de componente diretamente a uma chave de sessão.
- Migrar do Swashbuckle para o gerador de OpenAPI integrado no .NET 11
Uma migração passo a passo do Swashbuckle.AspNetCore para o Microsoft.AspNetCore.OpenApi no .NET 11: trocar AddSwaggerGen por AddOpenApi, converter os filtros de operação, esquema e documento em transformadores, manter uma UI e as mudanças incompatíveis do Microsoft.OpenApi v2 que pegam você.
- AsNoTracking vs AsNoTrackingWithIdentityResolution no EF Core 11: qual você deve usar?
Use AsNoTracking por padrão em consultas somente leitura. Recorra a AsNoTrackingWithIdentityResolution apenas quando o grafo de resultados contém a mesma entidade mais de uma vez e seu código depende de receber uma única instância compartilhada.
- Validação de minimal API vs FluentValidation no ASP.NET Core 11: qual você deve escolher?
Compare validação integrada de Minimal APIs e FluentValidation: regras assíncronas, filtros de endpoints, diferenças de versão e licença.
- O novo analisador EF1004 do EF Core 11 detecta um erro assíncrono silencioso
O EF Core 11 Preview 5 traz o analisador EF1004. Ele sinaliza ToAsyncEnumerable() em um IQueryable para que você não enumere uma consulta de banco de dados de forma síncrona dentro de um await foreach.
- HybridCache vs IMemoryCache vs IDistributedCache no .NET 11: qual você deve escolher?
Para código de cache novo no .NET 11, use HybridCache por padrão. Recorra ao IMemoryCache só quando precisar de velocidade em um único servidor sem serialização, e ao IDistributedCache só como armazenamento de respaldo. Aqui está a matriz de decisão.
- O acordo de chaves X25519 chega integrado ao .NET 11 Preview 5
.NET 11 Preview 5 adiciona um tipo X25519DiffieHellman de primeira classe ao System.Security.Cryptography, para fazer troca de chaves Curve25519 sem BouncyCastle ou NSec.
- Correção: The entity type 'X' requires a primary key to be defined no EF Core 11
O EF Core não encontra uma chave para o seu tipo. Nomeie uma propriedade Id ou {Type}Id, adicione [Key], chame HasKey ou, se for uma view ou SQL cru, chame HasNoKey.
- LINQ ganha FullJoin e joins sem seletor no .NET 11 Preview 5
O .NET 11 Preview 5 adiciona um operador FullJoin totalmente novo ao LINQ, além de sobrecargas que retornam tuplas para Join, LeftJoin, RightJoin e GroupJoin que dispensam por completo o seletor de resultado.
- Formulários SSR estáticos do Blazor ganham validação do lado do cliente no .NET 11 Preview 5
Formulários do Blazor renderizados de forma estática no servidor só podiam validar após um POST completo de ida e volta. O .NET 11 Preview 5 renderiza os metadados de validação para que o JS do Blazor aplique as regras de DataAnnotations no navegador, sem circuito.
- Correção: The configured execution strategy 'SqlServerRetryingExecutionStrategy' does not support user-initiated transactions
EnableRetryOnFailure entra em conflito com BeginTransaction. Envolva toda a transação em db.Database.CreateExecutionStrategy().ExecuteAsync(...) para que ela seja repetida como uma unidade.
- System.Text.Json finalmente escreve JSON Lines no .NET 11 Preview 5
.NET 11 Preview 5 adiciona JsonSerializer.SerializeAsyncEnumerable com topLevelValues: true, para que o System.Text.Json possa transmitir JSONL, e não apenas lê-lo.
- Correção: o render mode não é compatível com o render mode do componente pai (Blazor)
Você colocou @rendermode em um filho cujo pai já é interativo. Um subárvore tem exatamente um render mode. Remova a diretiva do filho ou mova-a para o limite.
- Como persistir o estado através do limite de renderização estático-para-interativo do Blazor no .NET 11
Um componente Blazor pré-renderizado executa sua inicialização duas vezes e perde o estado na transição para interativo. Resolva isso com o atributo [PersistentState] ou o serviço PersistentComponentState no .NET 11.
- Como expor OpenAPI sem Swashbuckle no ASP.NET Core 11
O Swashbuckle saiu dos templates do ASP.NET Core. Veja como gerar e servir um documento OpenAPI no .NET 11 com o pacote integrado Microsoft.AspNetCore.OpenApi: AddOpenApi, MapOpenApi, transformadores, múltiplos documentos, geração em tempo de build e uma interface por cima.
- Como organizar endpoints de Minimal APIs com MapGroup
Organize Minimal APIs com módulos de recursos e MapGroup: rotas aninhadas, metadados, filtros, autenticação e testes.
- Como validar corpos de requisição em minimal APIs sem controllers no ASP.NET Core 11
O ASP.NET Core 11 traz validação integrada para minimal APIs: chame AddValidation, anote seu record de requisição com DataAnnotations e um gerador de código-fonte valida o modelo vinculado e retorna 400 ProblemDetails antes de o seu handler rodar. Sem controllers, sem FluentValidation, sem verificações manuais.
- .NET 11 dá ao MemoryCache métricas de OpenTelemetry de primeira classe
.NET 11 Preview 4 traz um meter integrado para Microsoft.Extensions.Caching.Memory, então a taxa de acerto do cache e as expulsões fluem para o OpenTelemetry sem um poller em segundo plano.
- Migre de IWebHostBuilder para WebApplication.CreateBuilder no .NET 11
Uma migração passo a passo do antigo modelo de hospedagem Startup.cs mais WebHostBuilder para o modelo de hospedagem mínima com WebApplication.CreateBuilder, incluindo a depreciação ASPDEPR008, a ordenação de middleware, IStartupFilter e como manter seus testes funcionando.
- Migrar de System.Web.HttpContext para Microsoft.AspNetCore.Http.HttpContext
Uma migração prática do System.Web.HttpContext do ASP.NET Framework para o HttpContext do ASP.NET Core 11: HttpContext.Current, o mapa de propriedades, Server.MapPath, Session e o shim dos adaptadores System.Web para migrações incrementais.
- Migrar de ValueTask<T> de volta para Task<T>: quando e por quê (.NET 11, C# 14)
Um checklist prático para reverter os tipos de retorno ValueTask e ValueTask<T> para Task e Task<T>, o que quebra nos pontos de chamada, como verificar cada mudança e como saber se a troca valeu a pena.
- Migrar um app Blazor Server para Blazor United (Blazor Web App) no .NET 11
Uma lista de passos para mover um app Blazor Server independente para o template unificado Blazor Web App no .NET 11, mantendo cada página em InteractiveServer sem mudança de comportamento.
- Migrar do Azure Functions in-process para o modelo de worker isolado (.NET 8 / .NET 11)
Um checklist passo a passo para mover um app Azure Functions in-process em .NET para o modelo de worker isolado antes da aposentadoria de 10 de novembro de 2026, com diffs de csproj, reescritas de assinaturas e um rollout com troca de slots.
- Migre do Serilog para o logging com OpenTelemetry no .NET 11
Um guia passo a passo para tirar um app .NET 11 do Serilog e colocá-lo no logging com OpenTelemetry: a ponte de baixo risco Serilog.Sinks.OpenTelemetry, a migração completa para Microsoft.Extensions.Logging, o que quebra, como verificar e como fazer rollback.
- EF Core ExecuteUpdate versus carregar entidades e SaveChanges: qual você deve usar?
Um guia de decisão e um benchmark real para o EF Core 11: use ExecuteUpdate para escritas baseadas em conjunto por predicado, e o caminho carregar-depois-SaveChanges apenas quando você precisa do rastreador de mudanças, dos interceptadores ou de um grafo de objetos complexo.
- Migrar do EF Core 6 para o EF Core 11: as mudanças incompatíveis que realmente doem
Um guia de migração com versões fixadas, do EF Core 6.0 ao EF Core 11.0, percorrendo as mudanças incompatíveis do EF7, 8, 9, 10 e 11 que quebram apps reais: Encrypt=True, Contains com OPENJSON, PendingModelChangesWarning, a coluna json nativa e a divisão do SqlClient 7.0.
- BackgroundService vs IHostedService vs Hangfire para tarefas em segundo plano no .NET 11
Escolha BackgroundService para loops em processo, IHostedService puro quando precisar de controle fino do ciclo de vida, e Hangfire quando as tarefas precisarem sobreviver a um reinício. Uma matriz de decisão com código e o detalhe que decide por você.
- .NET 11 eleva a linha de base minima de CPU para x86-64-v2
.NET 11 Preview 4 deixa de dar suporte a chips x86/x64 anteriores a 2013 e eleva a linha de base do JIT para x86-64-v2. Veja o que quebra, por que e como verificar seu hardware antes de atualizar.
- .NET 11 converte um double em hex e recupera bit a bit
O Preview 4 do .NET 11 ensina double, float e Half a formatar com o especificador X e a fazer parse com NumberStyles.HexFloat, produzindo o mesmo texto hex IEEE-754 que o printf("%a") do C.
- Correção: ObjectDisposedException: Cannot access a disposed context instance
Sua tarefa fire-and-forget capturou um DbContext com escopo de requisição que o escopo de DI já havia liberado. Resolva um contexto novo dentro da tarefa com IServiceScopeFactory ou IDbContextFactory.
- EF Core 11 Preview 4: Pare de redigitar --project e --startup-project com .config/dotnet-ef.json
O EF Core 11 Preview 4 permite que a ferramenta dotnet ef leia valores de opções padrão de um arquivo .config/dotnet-ef.json, para que soluções divididas não forcem mais você a passar --project e --startup-project em todo comando.
- Como usar a divisão de consultas para evitar uma explosão cartesiana no EF Core 11
Quando você faz Include de duas coleções irmãs, o EF Core 11 retorna o produto cartesiano e a contagem de linhas explode. Veja como o AsSplitQuery resolve isso, como ativá-lo globalmente e os detalhes de consistência e ordenação que você deve observar.
2026 / 05
- Como executar trabalho fire-and-forget com segurança no ASP.NET Core com BackgroundService
Chamar Task.Run de um controller perde trabalho ao desligar, engole exceções e captura serviços scoped já descartados. O padrão seguro é uma fila Channel limitada drenada por um BackgroundService, que abre um novo scope por item de trabalho e termina o trabalho em andamento no StopAsync.
- Como usar ExecuteUpdate e ExecuteDelete para escritas em massa no EF Core 11
Um guia completo de ExecuteUpdate e ExecuteDelete no EF Core 11: o SQL que eles geram, a armadilha do rastreador de mudanças que sobrescreve sua escrita em massa silenciosamente, transações, controle de concorrência com a contagem de linhas afetadas e os setters por delegate do EF Core 10 que permitem montar atualizações condicionais com simples instruções if.
- Como usar serviços scoped dentro de um BackgroundService no ASP.NET Core 11
Um BackgroundService é um singleton, então não pode injetar diretamente um serviço scoped como um DbContext. Receba IServiceScopeFactory, abra um scope por unidade de trabalho com CreateAsyncScope, resolva dentro dele e descarte-o quando o trabalho terminar.
- Migrar do AutoMapper para mapeamento gerado por codigo-fonte com Mapperly
Um checklist passo a passo para substituir os Profiles, IMapper, ForMember e ProjectTo do AutoMapper 15 por mappers gerados por codigo-fonte com Riok.Mapperly 4.3 no .NET 11.
- Migrar do MediatR para injeção de dependência simples no .NET 11
Uma lista de verificação passo a passo para remover o MediatR 12-14 e substituir os handlers de IRequest, ISender, os pipeline behaviors e INotification por classes de serviço simples e injeção por construtor.
- Migrar de Newtonsoft.Json 13 para System.Text.Json em uma base de código grande de .NET 11
Um guia com versões fixadas para trocar o Newtonsoft.Json 13.0.4 pelo System.Text.Json embutido no .NET 11: os mapeamentos de atributos e opções, os valores padrão que mudam seu formato de saída silenciosamente, uma estratégia de implantação em etapas, a verificação e os problemas que afetam bases de código grandes.
- Migrar do .NET 8 para o .NET 11: o checklist completo
Planeje a migração do .NET 8 com o status atual do .NET 11 RC3, SDK exato, compatibilidade, implantação e rollback.
- Migre do .NET Framework 4.8 para o .NET 11 em 2026
Planeje a migração do .NET Framework 4.8 com suporte correto, fronteiras incrementais ASP.NET, dependências, configuração e rollback.
- Migrar do Xamarin.Forms 5.0 para o .NET MAUI 11: a lista completa
Migração de ponta a ponta do Xamarin.Forms 5.0 para o .NET MAUI 11 GA em net11.0, cobrindo a reescrita do csproj, a conversão de renderers customizados para handlers, o cabeamento do AppShell, a remoção do DependencyService, a aposentadoria do MessagingCenter, os recursos do Resizetizer e as ciladas que pegam um código de produção de verdade.
- Azure Functions modelo isolado vs in-process no .NET 11: qual escolher em 2026
Escolha o modelo isolated worker para toda nova aplicação Azure Functions no .NET 11 em 2026, e migre quaisquer aplicações in-process restantes antes do prazo de retirada de 10 de novembro.
- Modos de renderização Blazor no .NET 11: Server, WebAssembly e Auto
Escolha Blazor Web App ou WebAssembly autônomo conforme hosting, uso offline e serviços, com o comportamento correto de Auto.
- EF Core 11 Preview 4: as colunas de período das tabelas temporais finalmente podem ser propriedades reais
O EF Core 11 Preview 4 derruba a antiga restrição de propriedade shadow nas tabelas temporais do SQL Server. PeriodStart e PeriodEnd agora podem ser propriedades CLR comuns, configuradas com lambdas HasPeriodStart e HasPeriodEnd fortemente tipadas.
- StringBuilder vs interpolação de strings no .NET 11: qual você deve usar?
Use a interpolação de strings para compor de uma vez só um conjunto fixo de valores; use StringBuilder quando você anexa em um laço ou sobre um número desconhecido de fragmentos. A linha divisória é o laço, não a quantidade de valores.
- ASP.NET Core no .NET 11 Preview 4 ensina o metodo HTTP QUERY ao OpenAPI
O .NET 11 Preview 4 faz a geracao de OpenAPI no ASP.NET Core reconhecer o HTTP QUERY como uma operacao de primeira classe no OpenAPI 3.2, com um fallback elegante para documentos 3.0 e 3.1.
- Polly vs. resilience handlers no .NET 11: qual você deveria usar?
Use o resilience handler do Microsoft.Extensions.Http.Resilience para chamadas com HttpClient, pois ele é o Polly com padrões que entendem HTTP e telemetria em uma única linha. Recorra ao ResiliencePipeline do Polly diretamente apenas quando proteger algo que não seja um HttpClient.
- .NET 11 adiciona compressão Deflate e GZip sem alocações
O .NET 11 Preview 4 traz DeflateEncoder, GZipEncoder e ZLibEncoder mais os decodificadores correspondentes, para comprimir direto em um Span<byte> com OperationStatus, sem precisar de um Stream.
- Consultas compiladas do EF Core vs SQL bruto vs Dapper: qual vence no caminho de leitura?
Para caminhos com muitas leituras no .NET 11, EF Core puro com AsNoTracking fica dentro de ~5% do Dapper. Use consultas compiladas em um caminho quente de linha unica perfilado, e Dapper apenas para a menor latencia ou para o SQL que o LINQ nao consegue expressar.
- HttpClient vs HttpClientFactory vs Refit: qual usar no .NET 11?
Nunca crie um HttpClient por requisição. Use IHttpClientFactory para gerenciar o ciclo de vida e adicione Refit por cima quando quiser uma interface tipada em vez de escrever o código de requisição na mão. Um HttpClient singleton puro só serve para os casos mais simples.
- MediatR vs classes de serviço simples em 2026: a mudança de licença deveria te mover?
Compare o despacho e os behaviors do MediatR com chamadas diretas a serviços, incluindo validação de DI, critérios de licença e avaliação de desempenho.
- C# 16 transforma unsafe em um contrato para quem chama
C# 16 redesenha a palavra-chave unsafe para que ela propague uma obrigação a quem chama em vez de abrir silenciosamente um contexto unsafe, e agora os blocos unsafe internos são obrigatórios.
- Native AOT vs ReadyToRun vs JIT no .NET 11: qual você deveria publicar?
O JIT clássico com Dynamic PGO vence em throughput sustentado, o ReadyToRun acelera a inicialização sem mexer no código e o Native AOT entrega o binário menor e de inicialização mais rápida ao custo de reflexão e código dinâmico. Escolha pela forma do deployment, não por benchmarks isolados.
- System.Text.Json vs Newtonsoft.Json em 2026: qual você deve escolher?
Escolha System.Text.Json para código novo no .NET 11: já vem integrado, é cerca de 2x mais rápido e é o único que funciona com Native AOT. Recorra ao Newtonsoft.Json apenas para JSONPath, TypeNameHandling ou JSON realmente permissivo.
- ConfigureAwait(false) vs o padrão no .NET 11: ainda importa?
ConfigureAwait(false) continua obrigatório em código de biblioteca que pode rodar sob um SynchronizationContext (WinForms, WPF, MAUI). Em código de aplicação no ASP.NET Core, um console app ou um worker service rodando em .NET 11, ele não faz nada.
- IEnumerable vs IAsyncEnumerable vs IQueryable em C#: qual o método deve retornar?
Três interfaces de sequência, três modelos de execução. Use IQueryable quando um banco de dados puder traduzir a consulta, IAsyncEnumerable quando o produtor for assíncrono e você quiser transmitir, IEnumerable para tudo o mais em memória.
- Minimal APIs vs controllers no ASP.NET Core 11: qual escolher em 2026?
Use minimal APIs por padrão no ASP.NET Core 11. Use controllers apenas quando precisar de recursos de MVC que minimal APIs ainda não cobrem: roteamento baseado em convenções para muitas ações, filtros estilo MVC ou views Razor.
- EF Core 11 vs Dapper para inserções em massa: benchmark real
Para inserções em massa no .NET 11, nem EF Core nem Dapper vencem. SqlBulkCopy vence. Este é o benchmark, o porquê e o lugar que cada ferramenta merece.
- dotnet new mcpserver agora vem embutido no SDK do .NET 11 Preview 4
.NET 11 Preview 4 inclui o template de projeto mcpserver diretamente no SDK. Sem instalar Microsoft.McpServer.ProjectTemplates separado, sem dança de feeds de preview. Escolha transporte stdio ou HTTP, ative Native AOT, e dotnet new mcpserver -o MyServer é toda a configuração.
- Correção: O provisioning profile não inclui o dispositivo atualmente selecionado em MAUI iOS
O perfil que o Visual Studio escolheu foi gerado antes do UDID deste iPhone ser registrado. Registre o dispositivo novamente, regenere o perfil de desenvolvimento, baixe e implante.
- Fix: Unable to find a valid iOS Simulator runtime durante a compilação do MAUI
Xcode 15+ não inclui mais runtimes do simulador iOS. O MAUI falha o build quando SupportedOSPlatformVersion não tem um runtime correspondente instalado. Instale um com xcodebuild -downloadPlatform iOS ou pelas Settings do Xcode, e verifique com xcrun simctl list runtimes.
- .NET 11 adiciona captura de saída de processos livre de deadlock
.NET 11 Preview 4 traz novas APIs em System.Diagnostics.Process que drenam stdout e stderr em paralelo, helpers de uma linha para executar e capturar, e KillOnParentExit.
- Correção: o build do Gradle falhou em produzir um arquivo .apk no MAUI Android
Nove em cada dez vezes o erro real do Gradle está enterrado mais acima no log do MSBuild. Caminho do JDK 17, workload maui-android ausente e caminhos longos no Windows são as causas raiz mais comuns.
- Fix: A possible object cycle was detected
System.Text.Json se recusa a serializar grafos com referências circulares. Configure ReferenceHandler.IgnoreCycles, projete para um DTO, ou marque o ponteiro de volta com [JsonIgnore]. Preserve é último recurso.
- Correção: SqlException: Timeout expired durante migrações do EF Core
As migrações usam o DbContext de tempo de design, não o seu CommandTimeout de runtime. Defina o timeout via UseSqlServer(o => o.CommandTimeout(...)), o Command Timeout da string de conexão, ou Database.SetCommandTimeout antes de Migrate().
- MAUI muda para CoreCLR por padrão no Android, iOS e Mac Catalyst no .NET 11 Preview 4
O .NET 11 Preview 4 torna o CoreCLR o runtime padrão para o MAUI no Android, iOS, Mac Catalyst e tvOS. O Mono ainda está a uma propriedade do MSBuild de distância. Aqui está o que muda, o que quebra e como desativar.
- dotnet watch finalmente chega ao MAUI no Android e no iOS no .NET 11 Preview 4
O .NET 11 Preview 4 liga o dotnet watch para dispositivos Android, emuladores Android e o Simulador do iOS. Você edita, salva e o app em execução se atualiza sem rebuild manual. Há uma pegadinha de csproj que vale para iOS.
- Fix: System.Text.Json.JsonException: The JSON value could not be converted
System.Text.Json lança esta exceção quando o token JSON recebido não corresponde ao tipo CLR de destino. Faça o JSON corresponder ao tipo, ou registre um JsonConverter ou uma JsonSerializerOption que os reconcilie.
- Solução: System.Security.Cryptography.CryptographicException: Keyset does not exist
A chave privada do certificado mora em um arquivo de chaves do Windows que a identidade do processo não consegue ler. Ajuste a ACL, carregue o PFX com MachineKeySet ou use EphemeralKeySet.
- Correção: The command 'dotnet' could not be found no CI
Seu runner de CI não consegue resolver dotnet porque o SDK não está instalado para esse passo, ou está instalado mas fora do PATH. Use actions/setup-dotnet, fixe um global.json e exporte DOTNET_ROOT e ~/.dotnet/tools.
- Correção: System.IO.FileNotFoundException: Could not load file or assembly em um app publicado
Funciona com dotnet run, falha após dotnet publish. A DLL geralmente está faltando na pasta de publicação, não no runtime. Verifique deps.json, Private em ProjectReference e trimming.
- Correção: InvalidOperationException: Synchronous operations are disallowed
Substitua a chamada Stream.Read ou Write por ReadAsync/WriteAsync. Como último recurso, defina AllowSynchronousIO no Kestrel, IIS ou por requisição via IHttpBodyControlFeature.
- Fix: RZ10012: Found markup element with unexpected name no Blazor
O compilador Razor do Blazor emite RZ10012 quando uma tag em PascalCase não tem um tipo de componente correspondente no escopo. Adicione @using para o namespace do componente em _Imports.razor, ou @namespace no componente, e recompile.
- Fix: dotnet ef migrations add falha com 'Unable to create an object of type DbContext'
As ferramentas em tempo de design do EF Core não conseguiram instanciar seu DbContext. Exponha um host com WebApplication.CreateBuilder, aponte para o startup project correto ou implemente IDesignTimeDbContextFactory.
- Fix: MSB3027 Could not copy X to Y. Exceeded retry count of 10. Failed
MSB3027 significa que o MSBuild tentou copiar um arquivo 10 vezes e algum processo ainda retinha o destino. Mate o processo bloqueador, exclua bin/obj do antivírus ou aumente CopyRetryCount.
- Fix: The type or namespace name 'X' could not be found (depois de adicionar uma referência de projeto)
CS0246 logo após um ProjectReference recém-adicionado quase sempre é um descompasso de TargetFramework, uma pasta obj/ desatualizada ou uma diretiva using ausente. Cinco correções em ordem de probabilidade.
- Correção: Cannot consume scoped service 'X' from singleton 'Y'
A validação de escopo do ASP.NET Core lança esta exceção quando um singleton capturaria uma dependência scoped pelo resto do processo. Torne o consumidor scoped, ou injete IServiceScopeFactory e crie um escopo sob demanda.
- Fix: PlatformNotSupportedException: Operation is not supported on this platform em Native AOT
Native AOT remove o JIT e o interpretador, então reflection emit, compilação de árvores de expressão e MakeGenericType desconhecidos lançam em runtime. Encontre a chamada via IL3050 e troque por um gerador de código-fonte ou um caminho pré-pronto.
- Correção: Unable to resolve service for type 'X' while attempting to activate 'Y'
O ASP.NET Core lança esta exceção quando um construtor pede um tipo que nunca foi registrado, foi registrado no contêiner errado ou foi adicionado depois que o host foi construído. Três correções concretas cobrem quase todos os casos.
- Correção: TaskCanceledException: A task was canceled no HttpClient
O HttpClient lança TaskCanceledException por três motivos diferentes: timeout, cancelamento pelo chamador ou um aborto em nível de conexão. Diferencie-os com InnerException e CancellationToken.IsCancellationRequested e corrija o motivo certo.
- Fix: The JSON value could not be converted to System.DateTime
System.Text.Json só aceita strings ISO 8601 para DateTime. Envie 2026-05-08T14:00:00Z ou registre um JsonConverter que parseie seu formato. Strings vazias e timestamps Unix também lançam.
- Correção: The instance of entity type cannot be tracked because another instance with the same key value is already being tracked
EF Core 11 lança essa exceção quando dois objetos compartilham a chave primária dentro de um DbContext. Desanexe o antigo ou atualize-o no lugar. AsNoTracking na leitura evita a colisão.
- Correção: A second operation was started on this context instance before a previous operation completed
EF Core lança esta exceção quando dois await rodam em paralelo sobre o mesmo DbContext. Aguarde cada chamada de forma sequencial, ou obtenha um DbContext novo por unidade de trabalho concorrente via IDbContextFactory.
- Correção: System.InvalidOperationException: No connection string named 'DefaultConnection' could be found
Se GetConnectionString retorna null no .NET 11, o seu appsettings.json não tem a chave, não está sendo copiado para a saída do build, ou o arquivo de ambiente errado está sendo selecionado. Três checagens resolvem 95% dos casos.
- Como empacotar um app .NET MAUI para a Microsoft Store
Guia completo para empacotar um app .NET MAUI 11 para Windows como MSIX, agrupar x64/x86/ARM64 em um .msixupload e enviar pelo Partner Center: reserva de identidade, Package.appxmanifest, flags do dotnet publish, agrupamento com MakeAppx e a entrega do certificado confiável da Store.
- Como implementar arrastar e soltar no .NET MAUI 11
Arrastar e soltar de ponta a ponta no .NET MAUI 11: DragGestureRecognizer, DropGestureRecognizer, payloads personalizados de DataPackage, AcceptedOperation, posição do gesto e as armadilhas de PlatformArgs por plataforma no Android, iOS, Mac Catalyst e Windows.
- Como suportar o modo escuro corretamente em um aplicativo .NET MAUI
Modo escuro de ponta a ponta no .NET MAUI 11: AppThemeBinding, SetAppThemeColor, RequestedTheme, sobrescrita com UserAppTheme e persistência, o evento RequestedThemeChanged e os ajustes por plataforma do Info.plist e MainActivity que a documentação deixa passar.
- Como usar Tailwind CSS com Blazor WebAssembly no .NET 11
Uma configuração completa do .NET 11 para Tailwind CSS v4 em um app Blazor WebAssembly: CLI standalone (sem Node), target do MSBuild, diretivas @source para arquivos Razor e de isolamento de CSS, e um pipeline de publicação que sobrevive ao Native AOT.
- Como detectar consultas N+1 no EF Core 11
Um guia prático para identificar consultas N+1 no EF Core 11: como o padrão aparece em código real, como expô-lo via logs, interceptadores de diagnóstico, OpenTelemetry e um teste que quebra o build quando um caminho crítico regride.
- Como usar consultas compiladas no EF Core em hot paths
Um guia prático sobre consultas compiladas no EF Core 11: quando EF.CompileAsyncQuery realmente vence, o padrão de campo estático, as armadilhas com Include e tracking, e como medir antes e depois para provar que valeu a pena a cerimônia extra.
- Como escrever um app MAUI que roda apenas no Windows e macOS (sem mobile)
Tire Android e iOS de um projeto .NET MAUI 11 para que ele publique apenas Windows e Mac Catalyst: as edições no csproj, os comandos de workload e o multi-targeting que mantém o código limpo.
- Como configurar logging estruturado com Serilog e Seq no .NET 11
Um guia completo para conectar Serilog 4.x e Seq 2025.2 em uma aplicação ASP.NET Core do .NET 11: AddSerilog vs UseSerilog, bootstrap logging em duas etapas, configuração JSON, enrichers, request logging, correlação de traces com OpenTelemetry, API keys e os problemas de produção envolvendo buffering, retenção e nível de sinal.
- Como usar OpenTelemetry com .NET 11 e um backend gratuito
Conecte traces, métricas e logs do OpenTelemetry em uma aplicação ASP.NET Core .NET 11 com o exportador OTLP, e envie os dados para um backend gratuito e auto-hospedado: o Aspire Dashboard standalone para desenvolvimento local, Jaeger e SigNoz para produção auto-hospedada, e o OpenTelemetry Collector quando você precisar dos dois.
- Como escrever testes de integração contra um SQL Server real com Testcontainers
Um guia completo para rodar testes de integração de ASP.NET Core contra um SQL Server 2022 real usando Testcontainers 4.11 e EF Core 11: configuração de WebApplicationFactory, IAsyncLifetime, troca do registro do DbContext, aplicação de migrations, paralelismo, limpeza com Ryuk e armadilhas de CI.
- VSTest abandona Newtonsoft.Json no .NET 11 Preview 4 e o que quebra se você dependia disso transitivamente
.NET 11 Preview 4 e Visual Studio 18.8 entregam um VSTest que não propaga mais Newtonsoft.Json para os seus projetos de teste. Builds que silenciosamente usavam a cópia transitiva vão quebrar com um único PackageReference como correção.
2026 / 04
- Como adicionar rate limiting por endpoint no ASP.NET Core 11
Um guia completo de rate limiting por endpoint no ASP.NET Core 11: quando escolher fixed window vs sliding window vs token bucket vs concurrency, como RequireRateLimiting e [EnableRateLimiting] diferem, particionamento por usuário ou IP, o callback OnRejected, e a armadilha de implantação distribuída em que todo mundo cai.
- Como chamar a Claude API de uma Minimal API do .NET 11 com streaming
Faça streaming de respostas do Claude a partir de uma minimal API do ASP.NET Core 11 de ponta a ponta: o SDK oficial da Anthropic para .NET, TypedResults.ServerSentEvents, SseItem, IAsyncEnumerable, fluxo de cancelamento e os detalhes que silenciosamente acumulam seus tokens em buffer. Com exemplos de Claude Sonnet 4.6 e Opus 4.7.
- Como usar System.Threading.Lock no .NET
Use System.Threading.Lock em seções críticas síncronas desde o .NET 9. Entenda a compilação, os limites de await e a diferença para Monitor.
- Como escrever um gerador de código-fonte para INotifyPropertyChanged
Um guia completo para construir seu próprio gerador de código-fonte incremental para INotifyPropertyChanged em C# 14 e .NET 11: a pipeline IIncrementalGenerator, atributos marcadores, saída de partial class, o padrão SetProperty e como manter compatibilidade com AOT.
- Como detectar quando um arquivo termina de ser escrito no .NET
FileSystemWatcher dispara Changed antes do escritor terminar. Tres padroes confiaveis para .NET 11 para saber quando um arquivo esta totalmente escrito: abrir com FileShare.None, fazer debounce com estabilizacao de tamanho e o truque de renomeacao do lado do produtor que evita o problema completamente.
- Como compartilhar lógica de validação entre o servidor e o Blazor WebAssembly
A maior fonte de divergência de validação entre um cliente Blazor WebAssembly e uma API ASP.NET Core é a tentação de escrever as regras duas vezes. Este guia percorre a única estrutura que escala em .NET 11: uma biblioteca de classes Shared que detém os DTOs e seus validadores, consumida tanto pelo cliente WASM (EditForm + DataAnnotationsValidator ou Blazored.FluentValidation) quanto pelo servidor (filtro de endpoint em minimal API ou model binding do MVC), com um round-trip testado que devolve os ValidationProblemDetails do servidor para o EditContext.
- Como usar SearchValues<T> corretamente no .NET 11
SearchValues<T> supera IndexOfAny em 5x a 250x, mas só quando você o usa do jeito que o runtime espera. A regra de cachear como static, a pegadinha do StringComparison, quando não vale a pena e o truque de inversão com IndexOfAnyExcept que ninguém documenta.
- Como adicionar fluxos de autenticação OpenAPI ao Swagger UI no .NET 11
No .NET 11 o documento OpenAPI é gerado por Microsoft.AspNetCore.OpenApi e o Swagger UI não vem mais no template. Veja como conectar Bearer, OAuth2 com PKCE e OpenID Connect para que o botão Authorize realmente funcione.
- Como implementar refresh tokens no ASP.NET Core Identity
Dois caminhos válidos no .NET 11: o endpoint /refresh embutido no MapIdentityApi e uma configuração customizada com JWT, rotação de refresh tokens, rastreamento por família e detecção de reuso.
- Como fazer upload de um arquivo grande com streaming para o Azure Blob Storage
Faça upload de arquivos de vários GB para o Azure Blob Storage a partir do .NET 11 sem carregá-los na memória. BlockBlobClient.UploadAsync com StorageTransferOptions, MultipartReader para uploads em ASP.NET Core, e as armadilhas de buffering que jogam seu payload na LOH.
- Como reduzir o tempo de partida fria de uma AWS Lambda em .NET 11
Um manual prático e específico de versão para cortar partidas frias de Lambda em .NET 11. Cobre Native AOT em provided.al2023, ReadyToRun, SnapStart no runtime gerenciado dotnet10, ajuste de memória, reuso estático, segurança de trim, e como ler de fato INIT_DURATION.
- Como usar Native AOT com APIs mínimas do ASP.NET Core
Configure Minimal APIs para Native AOT com metadados JSON gerados. Entenda builders, ferramentas de publicação, avisos e limitações de recursos.
- Como aquecer o modelo do EF Core antes da primeira consulta
O EF Core constrói seu modelo conceitual de forma preguiçosa no primeiro acesso ao DbContext, o que faz a primeira consulta de um processo recém-iniciado ser várias centenas de milissegundos mais lenta do que qualquer consulta seguinte. Este guia cobre as três soluções reais no EF Core 11: um IHostedService de inicialização que toca Model e abre uma conexão, dotnet ef dbcontext optimize para entregar um modelo pré-compilado, e as armadilhas da chave de cache que reconstroem o modelo silenciosamente mesmo assim.
- Como adicionar um filtro global de exceções no ASP.NET Core 11
Guia completo de tratamento global de exceções no ASP.NET Core 11: por que IExceptionFilter é a ferramenta errada, como IExceptionHandler e UseExceptionHandler funcionam juntos, respostas com ProblemDetails, cadeias de múltiplos handlers e a mudança de comportamento do .NET 10 sobre supressão de diagnósticos.
- Como construir um servidor MCP customizado em C# no .NET 11
Construa um servidor Model Context Protocol funcional em C# 14 / .NET 11 usando o SDK oficial ModelContextProtocol 1.2. Cobre transporte stdio, atributos [McpServerTool], injeção de dependência, a armadilha do logging em stderr e o registro com Claude Code, Claude Desktop e VS Code.
- Como simular o DbContext sem quebrar o rastreamento de alterações
Simular o DbContext diretamente quebra silenciosamente o ChangeTracker, e por isso a Microsoft desencoraja essa prática. Este guia mostra os dois padrões que realmente funcionam no EF Core 11: SQLite em memória com uma conexão mantida aberta para que o ChangeTracker real seja executado, e o padrão repositório, que tira o EF Core inteiramente do teste.
- Como fazer testes unitários de código que usa HttpClient
Um guia completo para testar HttpClient no .NET 11: por que você não deve mockar HttpClient diretamente, como escrever um HttpMessageHandler de stub, trocar o handler primário com IHttpClientFactory, verificar retentativas do Polly e a opção WireMock.Net.
- Como fazer profiling de uma app .NET com dotnet-trace e ler a saída
Guia completo para fazer profiling de apps .NET 11 com dotnet-trace: instalar, escolher o perfil certo, capturar desde o startup e ler o .nettrace no PerfView, Visual Studio, Speedscope ou Perfetto.
- Como usar Channels em vez de BlockingCollection em C#
System.Threading.Channels é o substituto assíncrono de BlockingCollection no .NET 11. Este guia mostra como migrar, como escolher entre limitado e ilimitado, e como lidar com backpressure, cancelamento e desligamento controlado sem deadlocks.
- Como escrever um JsonConverter customizado em System.Text.Json
Um guia completo para escrever JsonConverter<T> customizado para System.Text.Json no .NET 11: quando você realmente precisa de um, como navegar pelo Utf8JsonReader corretamente, como lidar com tipos genéricos usando JsonConverterFactory e como manter compatibilidade com AOT.
- Como Gerar Código de Cliente Fortemente Tipado a partir de uma Especificação OpenAPI no .NET 11
Use o Kiota, o gerador oficial de OpenAPI da Microsoft, para produzir um cliente C# fluent e fortemente tipado a partir de qualquer especificação OpenAPI. Passo a passo: instalar, gerar, conectar à injeção de dependência do ASP.NET Core e gerenciar autenticação.
- Como ler um CSV grande no .NET 11 sem estourar a memória
Faça streaming de um CSV de vários gigabytes no .NET 11 sem OutOfMemoryException. File.ReadLines, CsvHelper, Sylvan e Pipelines comparados com código e medições.
- Como transmitir um arquivo de um endpoint ASP.NET Core sem buffering
Sirva arquivos grandes do ASP.NET Core 11 sem carrega-los na memoria. Tres niveis: PhysicalFileResult para arquivos em disco, Results.Stream para streams arbitrarios e Response.BodyWriter para conteudo gerado -- com codigo para cada caso.
- EF Core 11 Preview 3 adiciona RemoveDbContext para swaps limpos de provider em testes
EF Core 11 Preview 3 introduz RemoveDbContext, RemoveExtension, e um overload sem parâmetros do AddPooledDbContextFactory, removendo o boilerplate de trocar providers em testes e centralizando a configuração da pooled factory.
- Como cancelar uma Task de longa duração em C# sem causar deadlock
Cancelamento cooperativo com CancellationToken, CancelAsync, Task.WaitAsync e tokens ligados no .NET 11. Mais os padrões de bloqueio que transformam um cancelamento limpo em deadlock.
- Como usar IAsyncEnumerable<T> com EF Core 11
As queries do EF Core 11 implementam IAsyncEnumerable<T> diretamente. Veja como fazer streaming de linhas com await foreach, quando preferir a ToListAsync, e as pegadinhas envolvendo conexões, tracking e cancelamento.
- Como usar records com EF Core 11 corretamente
Um guia prático para misturar records do C# e EF Core 11. Onde records se encaixam, onde eles quebram o change tracking, e como modelar value objects, entidades e projeções sem brigar com o framework.
- Kestrel começa a processar requisições HTTP/3 antes do frame SETTINGS no .NET 11 Preview 3
.NET 11 Preview 3 permite o Kestrel servir requisições HTTP/3 antes do control stream e do frame SETTINGS do peer chegarem, cortando latência de handshake na primeira requisição de cada nova conexão QUIC.
- EF Core 11 traduz Contains para JSON_CONTAINS no SQL Server 2025
EF Core 11 traduz automaticamente LINQ Contains sobre coleções JSON para a nova função JSON_CONTAINS do SQL Server 2025, e adiciona EF.Functions.JsonContains para queries com path e modos específicos que conseguem bater num índice JSON.
- Como retornar múltiplos valores de um método em C# 14
Sete formas de retornar mais de um valor de um método em C# 14: tuplas nomeadas, parâmetros out, records, structs, desestruturação e o truque de extension member para tipos que não são seus. Benchmarks reais e uma matriz de decisão no final.
- RyuJIT poda mais bounds checks no .NET 11 Preview 3: index-from-end e i + constante
.NET 11 Preview 3 ensina ao RyuJIT a eliminar bounds checks redundantes em acessos consecutivos index-from-end e em padrões i + constante < length, cortando pressão de branches em loops apertados.
- RegexOptions.AnyNewLine chega no .NET 11 Preview 3: anchors Unicode-aware sem os hacks de \r?
.NET 11 Preview 3 adiciona RegexOptions.AnyNewLine para que ^, $, \Z, e . reconheçam toda sequência de newline Unicode, incluindo \r\n, NEL, LS, e PS, com \r\n tratado como um break atômico.
- Aspire 13.2 --isolated: rode instâncias paralelas do AppHost sem colisões de porta
Aspire 13.2 traz um flag --isolated que dá a cada aspire run suas próprias portas aleatórias e store de secrets. Desbloqueia trabalho multi-checkout, worktrees de agent, e testes de integração que precisam de um AppHost vivo.
- .NET 11 Preview 3: dotnet run -e seta variáveis de ambiente sem launch profiles
dotnet run -e no .NET 11 Preview 3 passa variáveis de ambiente direto da CLI e as expõe como items RuntimeEnvironmentVariable do MSBuild.
- dotnet sln finalmente edita solution filters pela CLI no .NET 11 Preview 3
.NET 11 Preview 3 ensina ao dotnet sln a criar, adicionar, remover e listar projetos em solution filters .slnf, então monorepos grandes podem carregar um subconjunto sem abrir o Visual Studio.
- dotnet watch no .NET 11 Preview 3: hosts Aspire, crash recovery, e Ctrl+C mais são
dotnet watch ganha integração com Aspire app host, relançamento automático depois de crashes, e tratamento de Ctrl+C consertado para apps desktop Windows no .NET 11 Preview 3.
- EF Core 11 poda joins de referência desnecessários em split queries
EF Core 11 Preview 3 remove joins to-one redundantes de split queries e derruba chaves ORDER BY desnecessárias. Um cenário relatado ficou 29% mais rápido, outro 22%. Aqui está como o SQL fica agora.
- System.Text.Json no .NET 11 Preview 3 adiciona PascalCase e políticas de naming por membro
.NET 11 Preview 3 fecha a história de políticas de naming no System.Text.Json: JsonNamingPolicy.PascalCase, um atributo [JsonNamingPolicy] em nível de membro, e um default [JsonIgnore] em nível de tipo para DTOs mais limpos.
- Blazor Virtualize finalmente lida com items de altura variável no .NET 11
ASP.NET Core no .NET 11 Preview 3 ensina ao componente Virtualize a medir items em runtime, consertando o jitter de spacing e scroll que as assunções de altura uniforme causavam.
- Pin clustering aterrissa no .NET MAUI 11 Maps
.NET MAUI 11 Preview 3 adiciona pin clustering embutido ao controle Map no Android e iOS, com grupos ClusteringIdentifier e um evento ClusterClicked.
- EF Core 11 adiciona GetEntriesForState pra pular DetectChanges
EF Core 11 Preview 3 introduz ChangeTracker.GetEntriesForState, um enumerador filtrado por state que evita um pass extra de DetectChanges em hot paths como interceptors de SaveChanges e hooks de audit.
- .NET MAUI 11 traz um LongPressGestureRecognizer embutido
.NET MAUI 11 Preview 3 adiciona LongPressGestureRecognizer como gesto de primeira classe, com duration, threshold de movimento, eventos de state, e binding de command, substituindo o behavior comum do Community Toolkit.
- EF Core 11 liga transactional batches de Cosmos DB por padrão
EF Core 11 agrupa writes de Cosmos DB em transactional batches por container e partition em cada SaveChanges, dando atomicidade best-effort e menos roundtrips sem mudanças de código.
- Blazor SSR finalmente ganha TempData no .NET 11
ASP.NET Core no .NET 11 Preview 2 traz TempData para a renderização estática do lado servidor do Blazor, habilitando mensagens flash e fluxos Post-Redirect-Get sem workarounds.
- Argumentos em expressões de coleção do C# 15: passe construtores inline com with(...)
C# 15 adiciona o elemento with(...) às expressões de coleção, permitindo que você passe capacidade, comparadores, e outros argumentos do construtor diretamente no inicializador.
- .NET 11 adiciona compressão Zstandard nativa ao System.IO.Compression
.NET 11 Preview 1 entrega ZstandardStream, ZstandardEncoder e ZstandardDecoder no System.IO.Compression, oferecendo suporte zstd rápido e integrado sem pacotes de terceiros.
- EF Core 11 permite criar e aplicar uma migração em um único comando
O comando dotnet ef database update agora aceita --add para criar e aplicar uma migração em um único passo. Veja como funciona, por que importa para containers e .NET Aspire, e o que observar.
- EF Core 11 adiciona busca vetorial nativa do SQL Server com índices DiskANN
EF Core 11 Preview 2 suporta o VECTOR_SEARCH() do SQL Server 2025 e os índices vetoriais DiskANN diretamente do LINQ. Veja como configurar o índice, executar consultas aproximadas, e o que muda da abordagem VectorDistance do EF Core 10.
- ASP.NET Core 11 entrega tracing OpenTelemetry nativo: largue o pacote NuGet extra
ASP.NET Core no .NET 11 Preview 2 adiciona atributos semânticos do OpenTelemetry diretamente à atividade do servidor HTTP, removendo a necessidade do OpenTelemetry.Instrumentation.AspNetCore.
- Os tipos union do C# 15 chegaram: type unions são entregues no .NET 11 Preview 2
C# 15 introduz a palavra-chave union para type unions com correspondência de padrões exaustiva e conversões implícitas. Disponível agora no .NET 11 Preview 2.
- Kestrel abandona exceções do seu parser HTTP/1.1 no .NET 11
O parser de requisições HTTP/1.1 do Kestrel no .NET 11 substitui BadHttpRequestException por um struct de resultado, cortando o overhead de requisições malformadas em até 40%.
- Runtime Async do .NET 11 substitui state machines com stack traces mais limpos
Runtime Async no .NET 11 move o tratamento de async/await das state machines geradas pelo compilador para o próprio runtime, produzindo stack traces legíveis, breakpoints corretos, e menos alocações no heap.
- dotnet new webworker: Web Workers de primeira classe para Blazor no .NET 11 Preview 2
Um novo template de projeto no .NET 11 Preview 2 gera o encanamento JS, o WebWorkerClient e o boilerplate de JSExport necessários para rodar código .NET em um Web Worker do navegador.