Novidades no .NET 9
Saiba mais sobre os novos recursos no .NET 9 e encontre links para documentação adicional.
O .NET 9, sucessor de .NET 8, tem um foco especial em aplicativos nativos de nuvem e desempenho. Ele terá suporte por 18 meses como uma versão STS (prazo padrão de suporte). Você pode baixar o .NET 9 aqui.
Uma novidade no .NET 9, a equipe de engenharia publica atualizações de versão prévia do .NET 9 nas Discussões do GitHub. Esse é um ótimo lugar para fazer perguntas e fornecer comentários sobre o lançamento.
Runtime do .NET
O runtime do .NET 9 inclui um novo modelo de atributo para opções de recursos com suporte a corte. Os novos atributos possibilitam definir interruptores de funções que as bibliotecas podem usar para ativar ou desativar áreas de funcionalidades.
A coleta de lixo inclui um recurso de adaptação dinâmica ao tamanho do aplicativo que é usado por padrão no lugar do GC do servidor.
O runtime também inclui várias melhorias de desempenho, como otimizações de loop, elementos embutidos e geração de código e vetorização Arm64.
Para obter mais informações, consulte Novidades no runtime do .NET 9.
Bibliotecas do .NET
System.Text.Json adiciona suporte para anotações de tipos de referência nulos e exportação de esquemas JSON a partir de tipos. Ele adiciona novas opções para você personalizar o recuo de JSON escrito e ler vários valores JSON de nível raiz de um único fluxo.
No LINQ, os novos métodos CountBy e AggregateBy possibilitam agregar estado por chave sem a necessidade de alocar agrupamentos intermediários por meio de GroupBy.
Para tipos de coleções, o tipo System.Collections.Generic.PriorityQueue<TElement,TPriority> inclui um novo método Remove(TElement, TElement, TPriority, IEqualityComparer<TElement>), que você pode usar para atualizar a prioridade de um item na fila.
Para criptografia, o .NET 9 adiciona um novo método de hash de uso único no tipo CryptographicOperations. Ele também adiciona novas classes que usam o algoritmo KMAC.
Para reflexão, o novo tipo PersistedAssemblyBuilder permite a você salvar um assembly emitido. Essa nova classe também inclui suporte a PDB, o que significa que você pode emitir informações de símbolo e usá-las para depurar um assembly gerado.
A classe TimeSpan inclui novos métodos de From*
que permitem criar um objeto TimeSpan
de um int
(em vez de um double
). Esses métodos ajudam a evitar erros causados pela imprecisão inerente em cálculos de ponto flutuante.
Para obter mais informações, consulte Novidades nas bibliotecas do .NET 9.
SDK .NET
O SDK do .NET 9 apresenta conjuntos de cargas de trabalho, em que todas elas permanecem em uma única versão específica até serem atualizadas explicitamente. Para ferramentas, uma nova opção para dotnet tool install
permite que os usuários (em vez de autores de ferramentas) decidam se uma ferramenta tem permissão para ser executada em uma versão de runtime do .NET mais recente do que a versão de destino da ferramenta. Além disso:
- O teste de unidade tem uma melhor integração do MSBuild que permite executar testes em paralelo.
- As auditorias de segurança do NuGet são executadas em referências de pacote diretas e transitivas, por padrão.
- O logger de terminal está habilitado por padrão e também melhorou a usabilidade. Por exemplo, a contagem total de falhas e avisos agora é resumida no final de um build.
- Novos analisadores de script do MSBuild ("verificações de build") estão disponíveis.
- O SDK pode detectar e ajustar as incompatibilidades de versão entre o SDK do .NET e o MSBuild.
- O comando
dotnet workload history
mostra o histórico de instalações e modificações da carga de trabalho para a instalação atual do SDK do .NET.
Para obter mais informações, consulte Novidades no SDK para .NET 9.
Blocos de construção de IA
O .NET 9 apresenta uma camada unificada de abstrações em C# por meio dos pacotes Microsoft.Extensions.AI e Microsoft.Extensions.VectorData. Essas abstrações facilitam a interação com os serviços de IA, incluindo modelos de linguagem pequenos e grandes (SLMs e LLMs), inserções, repositórios de vetores e middleware.
O .NET 9 também inclui novos tipos de tensor que expandem os recursos de IA. TensorPrimitives e o novo tipo de Tensor<T> expandem os recursos de IA, permitindo codificação, manipulação e computação eficientes de dados multidimensionais. Você pode encontrar esses tipos na versão mais recente do pacote System.Numerics.Tensors.
TensorPrimitives
- Escopo do método expandido: aumentou de 40 para quase 200 sobrecargas e agora inclui operações numéricas semelhantes a
Math
,MathF
eINumber<T>
, mas aplicadas a intervalos de valores. - Aprimoramentos de desempenho: muitas operações agora são otimizadas para SIMD para melhorar o desempenho.
- Sobrecargas genéricas: aceitam qualquer tipo
T
que implemente determinada interface, expandindo além de apenas intervalos de valores flutuantes no .NET.
Tensor<T>
- Baseia-se em
TensorPrimitives
para operações matemáticas eficientes. - Fornece interoperabilidade eficiente com bibliotecas de IA (ML.NET, TorchSharp, ONNX Runtime) usando zero cópias sempre que possível.
- Habilita a manipulação de dados fácil e eficiente com operações de indexação e fatiamento.
- É experimental no .NET 9.
ML.NET
ML.NET é uma estrutura multiplataforma de software livre que permite a integração de modelos personalizados de machine learning em aplicativos .NET.
ML.NET 4.0 apresenta as seguintes melhorias:
- Novas maneiras de configurar programaticamente as opções
MLContext
. - Carregue modelos ONNX como
Stream
. - Melhorias de DataFrame.
- Novos recursos para geradores de token.
- (Experimental) Portas TorchSharp da família de modelos Llama e Phi.
- (Experimental) APIs de pipeline CausalLM.
Para obter mais informações, consulte Novidades no ML.NET.
Tokenizadores
A biblioteca Microsoft.ML.Tokenizers fornece aos desenvolvedores para .NET recursos para codificação e decodificação de texto em tokens. Para cenários de IA, isso é importante para gerenciar o contexto, calcular o custo e pré-processar texto ao trabalhar com modelos locais.
A versão mais recente apresenta novos recursos significativos para tokenizadores:
- Tiktoken para modelos GPT (3, 3.5, 4, 4o, o1) e Llam3
- Llama (baseado em SentencePiece) para modelos Llama e Mistral
- CodeGen para modelos de geração de código como codegen-350M-mono
- Modelo Phi2 da Microsoft (baseado em CodeGen)
- WordPiece
- Bert (baseado no WordPiece) para modelos compatíveis com Bert, como optimum--all-MiniLM-L6-v2
.NET Aspire
O .NET Aspire é um conjunto de ferramentas, modelos e pacotes avançados para a criação de aplicativos prontos para produção e observáveis. A versão mais recente do .NET Aspire inclui melhorias no dashboard e no gerenciamento do ciclo de vida do recurso. Ele também adiciona novas integrações e APIs para obter mais flexibilidade durante o desenvolvimento. O .NET Aspire 9 funciona com aplicativos .NET 9 e .NET 8. Para obter mais informações, consulte Novidades no .NET Aspire 9.
ASP.NET Core
ASP.NET Aplicativos principais criados com o .NET 9 são seguros por padrão, expandiram o suporte para compilação antecipada e melhoraram o monitoramento e o rastreamento. Com as melhorias de desempenho, você verá maior taxa de transferência e tempo de inicialização mais rápido e tudo com menos uso de memória. O ASP.NET Core no .NET 9 inclui:
- Tratamento otimizado de arquivos estáticos, como JavaScript e CSS, no momento da compilação e publicação com versionamento automático com identificação única.
- Blazor: novos modelos de aplicativo Híbrido e Web, detecção do modo de renderização de componentes, nova experiência de reconexão com renderização de servidor.
- APIs: suporte interno para geração de documentos OpenAPI usando
Microsoft.AspNetCore.OpenAPI
, suporte AOT nativo aprimorado. - Segurança aprimorada com novas APIs para autenticação e autorização.
- Configuração mais fácil para o certificado de desenvolvimento confiável no Linux para habilitar HTTPS durante o desenvolvimento.
Esses são apenas alguns dos recursos e aprimoramentos no .NET 9. Para saber mais, confira Novidades no ASP.NET Core 9.0.
.NET MAUI
O foco da interface do usuário de aplicativo multiplataforma do .NET (.NET MAUI) no .NET 9 é o desempenho e a confiabilidade aprimorados e integrações mais profundas para aplicativos móveis e desktop. O .NET MAUI inclui uma implementação nova e mais eficaz de CollectionView e CarouselView para iOS e Mac Catalyst, atualizações para controles existentes, novos eventos de ciclo de vida do aplicativo e AOT nativo e aprimoramentos de corte para melhorar o tamanho do aplicativo e o tempo de inicialização. Além disso:
- Um novo controle de área de trabalho TitleBar está disponível para o Windows.
- Um novo controle de HybridWebView permite a inclusão mais fácil de conteúdo habilitado para JavaScript de estruturas como ReactJS, Vue.jse Angular.
- Entry agora dá suporte a modos de teclado adicionais.
- Os manipuladores de controle se desconectam automaticamente de seus controles quando possível.
- MainPage foi considerado obsoleto em favor de definir a página primária do aplicativo, sobrescrevendo a classe Application.CreateWindow(IActivationState).
Para obter mais informações sobre esses novos recursos e muito mais, consulte Novidades no .NET MAUI para .NET 9.
EF Core
O Entity Framework Core inclui atualizações significativas para o provedor de banco de dados do Azure Cosmos DB para NoSQL. Ele também abrange algumas etapas para a compilação AOT e para a realização de consultas pré-compiladas, entre outras melhorias. Para obter mais informações, consulte Novidades no EF Core 9.
C# 13
O C# 13 é fornecido com o SDK do .NET 9 e inclui os seguintes novos recursos:
- Coleções
params
- Novo tipo de
lock
e semântica - Nova sequência de escape –
\e
- Melhorias de tipo natural do grupo de métodos
- Acesso implícito do indexador em inicializadores de objeto
- Habilitar locais
ref
e contextosunsafe
em iteradores e métodos assíncronos - Habilitar tipos de
ref struct
para implementar interfaces - Permitir tipos ref struct como argumentos para parâmetros de tipo em programação genérica.
- Propriedades parciais e indexadores agora são permitidos em tipos de
partial
. - A prioridade de resolução de sobrecarga permite que os autores da biblioteca designem uma sobrecarga como melhor do que as outras.
Além disso, o C# 13 adiciona uma versão prévia do recurso: propriedades suportadas por field
.
Para obter mais informações, confira Novidades do C# 13.
F# 9
O F# 9 é fornecido com o SDK do .NET 9 e inclui os seguintes novos recursos:
- Tipos de referência anuláveis
- Propriedades .Is* de união discriminada
- Padrões ativos parciais podem retornar bool em vez da opção de unidade
- Prefira métodos de extensão ao invés de propriedades intrínsecas quando os argumentos forem fornecidos
- Expressões de computação vazias
- As diretivas de hash têm permissão para usar argumentos que não são de cadeia de caracteres
- Diretiva #help estendida em fsi para mostrar a documentação no loop de leitura-avaliação-impressão (REPL)
- Permitir que #nowarn dê suporte ao prefixo FS em códigos de erro para desabilitar avisos
- Aviso sobre o atributo TailCall em funções não recursivas ou valores vinculados por 'let'
- Aplicar destinos de atributo
- Funções aleatórias para coleções
- Suporte de expressões de coleção em C# para listas e conjuntos em F#
- Várias melhorias de produtividade, desempenho e ferramentas do desenvolvedor
Para saber mais, consulte Novidades do F# 9.
Windows Presentation Foundation
O WPF no .NET 9 oferece suporte aprimorado para a criação de aplicativos modernos com vários aprimoramentos de temas e muito mais:
- Suporte para o tema do Windows Fluent.
- Suporte a temas nos modos claro e escuro do Windows foi adicionado.
- Os temas agora suportam a cor de destaque do Windows.
- A renderização de fonte foi aprimorada para dar suporte a ligaturas baseadas em hífen.
BinaryFormatter
não há mais suporte.
Para obter mais informações, consulte Novidades no WPF para .NET 9.
Windows Forms
O WinForms no .NET 9 traz suporte para novos temas, aprimoramentos para desenvolvimento assíncrono e muito mais:
- Agora,
Form
eTaskDialog
suportamShowDialogAsync
. (Recurso experimental) BinaryFormatter
não há mais suporte.- Suporte experimental para renderizar o aplicativo no modo escuro, conforme o suporte do Windows.
FolderBrowserDialog
eToolStrip
tiveram algumas pequenas melhorias.- A biblioteca System.Drawing teve muitas melhorias, incluindo encapsular efeitos GDI+, suporte para
ReadOnlySpan
e melhor geração de código de interoperabilidade.
Para obter mais informações, consulte Novidades no Windows Forms para .NET 9.