Alterações interruptivas no .NET 10

Se você estiver migrando um aplicativo para o .NET 10, as alterações interruptivas listadas aqui poderão afetar você. As alterações são agrupadas por área de tecnologia, como ASP.NET Core ou Windows Forms.

Este artigo categoriza cada alteração interruptiva como incompatível binário ou incompatível com a origem ou alteração comportamental:

  • Binário incompatível - Quando executados no novo runtime ou componente, os binários existentes podem encontrar uma alteração significativa no comportamento, como falha ao carregar ou executar e, nesse caso, exigir recompilação.

  • Incompatível com a origem – quando recompilado usando o novo SDK ou componente ou para direcionar o novo runtime, o código-fonte existente pode exigir alterações de origem para compilar com êxito.

  • Alteração comportamental – o código e os binários existentes podem se comportar de forma diferente no runtime. Se o novo comportamento for indesejável, o código existente precisará ser atualizado e recompilado.

Observação

Este artigo é um trabalho em andamento. Esta não é uma lista completa de alterações interruptivas no .NET 10.

ASP.NET Core

Veja alterações significativas no ASP.NET Core 10.

Contêineres

Title Tipo de alteração
Imagens de .NET padrão usam o Ubuntu Alteração de comportamento
O teste dotnet precisa de um diretório base de artefatos VSTest gravável em contêineres Alteração de comportamento

Bibliotecas principais do .NET

Title Tipo de alteração
Obsolescências da API Origem incompatível
Alteração do comportamento de ActivitySource.CreateActivity e ActivitySource.StartActivity Alteração de comportamento
Cargas sem falha do Arm64 SVE exigem máscara Binário/incompatível com o código-fonte
BufferedStream.WriteByte não executa mais o flush implícito Alteração de comportamento
Resolução de sobrecarga do C# 14 com parâmetros span Alteração de comportamento
Comportamento consistente de deslocamento em matemática genérica Alteração de comportamento
Propagador de contexto de rastreamento padrão atualizado para o padrão W3C Alteração de comportamento
DriveInfo.DriveFormat retorna tipos de sistema de arquivos Linux Alteração de comportamento
Anotação DynamicallyAccessedMembers removida do ctor DefaultValueAttribute Binário/incompatível com o código-fonte
Tamanho do struct explícito não permitido com InlineArray Incompatível binariamente
FilePatternMatch.Stem foi alterado para não anulável Fonte incompatível/mudança comportamental
GnuTarEntry e PaxTarEntry não incluem mais atime e ctime por padrão Alteração de comportamento
A análise sintática de LDAP DirectoryControl agora é mais rigorosa Alteração de comportamento
Normalização da versão do MacCatalyst Alteração de comportamento
Mutexes nomeados usam por padrão o escopo do usuário no Unix Alteração de comportamento
.NET runtime não fornece mais manipuladores de sinal de terminação padrão Alteração de comportamento
System.Linq.AsyncEnumerable incluído nas bibliotecas principais Origem incompatível
Validação do argumento Type.MakeGenericSignatureType Alteração de comportamento

Criptografia

Title Tipo de alteração
CompositeMLDsa atualizado para draft-08 Alteração de comportamento
CoseSigner.Key pode ser nulo Mudança comportamental/incompatível com a fonte
Membros MLDsa e SlhDsa 'SecretKey' renomeados Origem incompatível
Não há suporte para primitivos criptográficos OpenSSL no macOS Alteração de comportamento
OpenSSL 1.1.1 ou posterior é necessário no Unix Alteração de comportamento
A validação X500DistinguishedName é mais rigorosa Alteração de comportamento
Os parâmetros de chave X509Certificate e PublicKey podem ser nulos Mudança comportamental/incompatível com a fonte
Variável de ambiente renomeada para DOTNET_OPENSSL_VERSION_OVERRIDE Alteração de comportamento

Entity Framework Core

Consulte Alterações significativas no EF Core 10.

Extensions

Title Tipo de alteração
BackgroundService executa todo ExecuteAsync como uma tarefa Alteração de comportamento
Corrigir problemas em GetKeyedService() e GetKeyedServices() com AnyKey Alteração de comportamento
Valores nulos preservados na configuração Alteração de comportamento
Mensagem não mais duplicada na saída do log do Console Alteração de comportamento
ProviderAliasAttribute foi movido para a assembly Microsoft.Extensions.Logging.Abstractions Origem incompatível
Removida a anotação DynamicallyAccessedMembers do código do Microsoft.Extensions.Configuration que não é seguro para trimming Incompatível binariamente

Globalization

Title Tipo de alteração
Variável de ambiente renomeada para DOTNET_ICU_VERSION_OVERRIDE Alteração de comportamento

Ferramenta de instalação

Title Tipo de alteração
API dotnet.acquire para VS Code não baixa mais sempre as versões mais recentes Alteração de comportamento

Interoperabilidade

Title Tipo de alteração
Falha na conversão do objeto IDispatchEx COM para IReflect Alteração de comportamento
Aplicativos de arquivo único não procuram mais bibliotecas nativas no diretório do executável Alteração de comportamento
Especificar DllImportSearchPath.AssemblyDirectory pesquisa apenas o diretório do assembly Alteração de comportamento

Rede

Title Tipo de alteração
Suporte a HTTP/3 desabilitado por padrão com PublishTrimmed Origem incompatível
MailAddress aplica a validação para pontos consecutivos Alteração de comportamento
Streaming de respostas HTTP habilitadas por padrão em clientes HTTP do navegador Alteração de comportamento
Uri limites de comprimento removidos Alteração de comportamento

Reflection

Title Tipo de alteração Versão introduzida
Anotações mais restritas em InvokeMember/FindMembers/DeclaredMembers Incompatibilidade de comportamento/fonte
Validação de argumento de Type.MakeGenericSignatureType Alteração de comportamento

SDK e MSBuild

Title Tipo de alteração
.NET CLI --interactive tem como padrão true em cenários de usuário Alteração de comportamento
dotnet Os comandos da CLI registram dados não relevantes de comando para stderr Alteração de comportamento
O empacotamento de ferramentas .NET cria pacotes de ferramentas específicos de RuntimeIdentifier Alteração de comportamento
Configuração padrão da carga de trabalho: de 'manifestos soltos' para o modo 'conjuntos de carga de trabalho' Alteração de comportamento
DefineConstants para estruturas de destino não disponíveis no momento da avaliação Alteração de comportamento
A cobertura de código EnableDynamicNativeInstrumentation usa como padrão false Alteração de comportamento
Os scripts dnx ignoram a seleção de SDK do global.json Alteração de comportamento
dnx.ps1 arquivo não está mais incluído no SDK .NET Origem incompatível
Aspas duplas em diretivas de nível de arquivo não são permitidas Origem incompatível
dotnet new sln usa por padrão o formato de arquivo SLNX Alteração de comportamento
dotnet package list executa a restauração Alteração de comportamento
dotnet restore audita pacotes transitivos Alteração de comportamento
dotnet tool install --local cria manifest por padrão Alteração de comportamento
dotnet watch registra em stderr em vez de stdout Alteração de comportamento
project.json não é compatível com dotnet restore Origem incompatível
Suporte à impressão digital SHA-1 preterido em dotnet nuget sign Alteração de comportamento
MSBUILDCUSTOMBUILDEVENTWARNING mecanismo de escape removido Alteração de comportamento
Tratamento de recursos de cultura personalizada do MSBuild Alteração de comportamento
NU1510 é gerado para referências diretas podadas pelo NuGet Origem incompatível
Pacotes NuGet sem ativos de runtime não estão incluídos no deps.json Origem incompatível
PackageReference sem uma versão gera um erro Alteração de comportamento
PrunePackageReference torna privadas as referências prunáveis diretas Alteração de comportamento
Avisos HTTP promovidos a erros em dotnet package list e dotnet package search Mudança comportamental/incompatível com a fonte
NUGET_ENABLE_ENHANCED_HTTP_RETRY variável de ambiente removida Alteração de comportamento
As fontes de auditoria do NuGet não permitem mais HTTP inseguro por padrão Alteração de comportamento
O NuGet registra um erro para IDs de pacote inválidas Alteração de comportamento
ToolCommandName não definido para pacotes que não são de ferramentas Origem incompatível
A instalação do pacote de modelo verifica as assinaturas do NuGet Alteração de comportamento

Serialização

Title Tipo de alteração
System.Text.Json verifica se há conflitos de nome de propriedade Alteração de comportamento
XmlSerializer não ignora mais as propriedades marcadas com ObsoleteAttribute Alteração de comportamento

Windows Forms

Title Tipo de alteração
Obsolescências da API Origem incompatível
Os aplicativos que fazem referência a WPF e WinForms devem desambiguar os tipos MenuItem e ContextMenu Origem incompatível
Parâmetro renomeado em HtmlElement.InsertAdjacentElement Origem incompatível
Truncamento de imagem da caixa de seleção TreeView Alteração de comportamento
StatusStrip usa System RenderMode por padrão Alteração de comportamento
System.Drawing OutOfMemoryException foi alterado para ExternalException Alteração de comportamento

Windows Presentation Foundation (WPF)

Title Tipo de alteração
ColumnDefinitions e RowDefinitions vazias não são permitidas Origem incompatível
O uso incorreto do DynamicResource causa falha no aplicativo Fonte incompatível/mudança comportamental