Novidades do .NET 5
O .NET 5 é a próxima versão principal do .NET Core a seguir 3,1. Nomeamos essa nova versão do .NET 5 em vez do .NET Core 4 por dois motivos:
- Pulamos os números de versão 4.x para evitar confusão com .NET Framework 4.x.
- Tiramos "Core" do nome para enfatizar que essa é a implementação principal do .NET daqui para frente. O .NET 5 dá suporte a mais tipos de aplicativos e mais plataformas do que .NET Core ou .NET Framework.
ASP.NET Core 5.0 é baseado no .NET 5, mas mantém o nome "Core" para evitar confundi-lo com ASP.NET MVC 5. Da mesma forma, o Entity Framework Core 5.0 mantém o nome "Core" para evitar confundi-lo com o Entity Framework 5 e 6.
O .NET 5 inclui os seguintes aprimoramentos e novos recursos em comparação com o .NET Core 3.1:
- Atualizações de C#
- Atualizações de F#
- Atualizações de Visual Basic
- Novos recursos de System.Text.Json
- Aplicativos de arquivo único
- Corte de aplicativo
- Intrínsecos do Windows Arm64 e Arm64
- Suporte a ferramentas de depuração de despejo
- As bibliotecas de runtime são 80% anotadas para tipos de referência anuláveis
- Aprimoramentos de desempenho:
O .NET 5 não substitui .NET Framework
O .NET 5 e versões posteriores são a implementação principal do .NET daqui para frente, mas .NET Framework 4.x ainda tem suporte. Não há planos para portar as seguintes tecnologias de .NET Framework para o .NET 5, mas há alternativas no .NET:
Tecnologia | Alternativa recomendada |
---|---|
Web Forms | ASP.NET Core Blazor ou Razor Pages |
Fluxo de trabalho do Windows (WF) | Elsa-Workflows |
Windows Communication Foundation
A implementação original do WCF (Windows Communication Foundation) só tinha suporte no Windows. No entanto, há uma porta de cliente disponível no .NET Foundation. Ele é totalmente de código aberto, multiplataforma e compatível com a Microsoft. Os principais pacotes NuGet estão listados abaixo:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- {1>System.ServiceModel.Security<1}
Os componentes do servidor que complementam as bibliotecas de clientes mencionadas acima estão disponíveis por meio do CoreWCF. A partir de abril de 2022, o CoreWCF tem suporte oficial da Microsoft. No entanto, para uma alternativa ao WCF, considere gRPC.
O .NET 5 não substitui .NET Standard
O novo desenvolvimento de aplicativos pode especificar o TFM (Moniker da Estrutura de Destino) net5.0
para todos os tipos de projeto, incluindo bibliotecas de classes. O compartilhamento de código entre cargas de trabalho do .NET 5 é simplificado porque tudo o que você precisa é do net5.0
TFM.
Para aplicativos e bibliotecas do .NET 5, o net5.0
TFM combina e substitui os TFMs netcoreapp
e netstandard
. No entanto, se você planeja compartilhar código entre cargas de trabalho de .NET Framework, .NET Core e .NET 5, poderá fazer isso especificando netstandard2.0
como seu TFM. Para obter mais informações, confira .NET Standard.
Atualizações de C#
Os desenvolvedores de aplicativos .NET 5 terão acesso à versão e aos recursos mais recentes do C#. O .NET 5 é combinado com o C# 9, o que traz muitos novos recursos para a linguagem. Veja aqui alguns destaques:
Registros: tipos de referência com semântica de igualdade baseada em valor e mutação não destrutiva suportada por uma nova expressão
with
.Correspondência de padrões relacionais: estende os recursos de correspondência de padrões para operadores relacionais para avaliações e expressões comparativas, incluindo padrões lógicos - novas palavras-chave
and
,or
enot
.Instruções de nível superior: como um meio de acelerar a adoção e o aprendizado de C#, o método
Main
pode ser omitido e o aplicativo tão simples quanto o seguinte é válido:System.Console.Write("Hello world!");
Ponteiros de função: construções de linguagem que expõem os seguintes opcodes de IL (linguagem intermediária):
ldftn
ecalli
.
Para obter mais informações sobre os recursos disponíveis do C# 9, consulte Novidades no C# 9.
Geradores de origem
Além de alguns dos novos recursos em C# realçados, os geradores de origem estão entrando em projetos de desenvolvedor. Os geradores de origem permitem que o código executado durante a compilação inspecione seu programa e produza arquivos adicionais que são compilados junto com o restante do código.
Para obter mais informações sobre geradores de origem, consulte Introdução a geradores de origem C# e Amostras de gerador de origem C#.
Atualizações de F#
F# é a linguagem de programação funcional .NET e, com o .NET 5, os desenvolvedores têm acesso ao F# 5. Um dos novos recursos são cadeias de caracteres interpoladas, semelhantes à cadeia de caracteres interpolada em C# e até mesmo JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Além da interpolação de cadeia de caracteres básica, há interpolação por tipo. Com a interpolação por tipo, um determinado tipo deve corresponder ao especificador de formato.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Esse formato é semelhante à função sprintf
que formata uma cadeia de caracteres com base em entradas fortemente tipadas.
Para saber mais, consulte Novidades do F# 5.
Atualizações de Visual Basic
Não há novos recursos de linguagem para o Visual Basic no .NET 5. No entanto, com o .NET 5, o suporte ao Visual Basic é estendido para:
Descrição | Parâmetro dotnet new |
---|---|
Aplicativo do Console | console |
Biblioteca de classes | classlib |
Aplicativo WPF | wpf |
Biblioteca de classes do WPF | wpflib |
Biblioteca de Controles Personalizados do WPF | wpfcustomcontrollib |
Biblioteca de controle de usuário WPF | wpfusercontrollib |
Aplicativo Windows Forms (WinForms) | winforms |
Biblioteca de Classes Windows Forms (WinForms) | winformslib |
Projeto de Teste de Unidade | mstest |
Projeto de Teste do NUnit 3 | nunit |
Item de Teste do NUnit 3 | nunit-test |
Projeto de Teste xUnit | xunit |
Para obter mais informações sobre modelos de projeto da .NET CLI, consulte dotnet new
.
Novos recursos de System.Text.Json
Há novos recursos dentro e para System.Text.Json:
- Preservar referências e manipular referências circulares
- Métodos de extensão HttpClient e HttpContent
- Permitir ou gravar números entre aspas
- Suporte a tipos imutáveis e registros C# 9
- Suporte a acessadores de propriedade não pública
- Campos de suporte
- Ignorar propriedades condicionalmente
- Dar suporte a dicionários sem chave de cadeia de caracteres
- Permitir que conversores personalizados manipulem nulo
- Copiar JsonSerializerOptions
- Criar JsonSerializerOptions com padrões da Web