O que há de novo no .NET 5
O .NET 5 é a próxima versão principal do .NET Core após a versão 3.1. Nomeamos esta nova versão de .NET 5 em vez de .NET Core 4 por dois motivos:
- Ignoramos os números de versão 4.x para evitar confusão com o .NET Framework 4.x.
- Retiramos "Core" do nome para enfatizar que esta é a principal implementação do .NET no futuro. O .NET 5 suporta mais tipos de aplicativos e mais plataformas do que o .NET Core ou o .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 em C#
- Atualizações em F#
- Atualizações do Visual Basic
- Novos recursos System.Text.Json
- Aplicativos de arquivo único
- Corte de aplicativos
- Windows Arm64 e Arm64 intrínsecos
- Suporte de ferramentas para depuração de dump
- As bibliotecas de tempo de execução são 80% anotadas para tipos de referência anuláveis
- Melhorias de desempenho:
O .NET 5 não substitui o .NET Framework
O .NET 5 e versões posteriores são a principal implementação do .NET no futuro, mas o .NET Framework 4.x ainda é suportado. Não há planos para portar as seguintes tecnologias do .NET Framework para o .NET 5, mas há alternativas no .NET:
Tecnologia | Alternativa recomendada |
---|---|
Web Forms | ASP.NET Páginas Core Blazor ou Razor |
Fluxo de trabalho do Windows (WF) | Elsa-Fluxos de trabalho |
Windows Communication Foundation
A implementação original do Windows Communication Foundation (WCF) era suportada apenas no Windows. No entanto, há uma porta de cliente disponível no .NET Foundation. É totalmente de código aberto, multiplataforma e suportado pela Microsoft. Os principais pacotes NuGet estão listados abaixo:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitivos
- System.ServiceModel.Segurança
Os componentes de servidor que complementam as bibliotecas de cliente acima mencionadas estão disponíveis através do CoreWCF. A partir de abril de 2022, o CoreWCF é oficialmente suportado pela Microsoft. No entanto, para uma alternativa ao WCF, considere gRPC.
O .NET 5 não substitui o .NET Standard
O desenvolvimento de novos aplicativos pode especificar o net5.0
Target Framework Moniker (TFM) para todos os tipos de projeto, incluindo bibliotecas de classes. O compartilhamento de código entre cargas de trabalho do .NET 5 é simplificado: tudo o que você precisa é do net5.0
TFM.
Para aplicativos e bibliotecas do .NET 5, o net5.0
TFM combina e substitui os netcoreapp
e netstandard
TFMs. No entanto, se você planeja compartilhar código entre cargas de trabalho do .NET Framework, .NET Core e .NET 5, poderá fazê-lo especificando netstandard2.0
como seu TFM. Para obter mais informações, consulte .NET Standard.
Atualizações em C#
Os desenvolvedores que escrevem aplicativos .NET 5 terão acesso à versão e aos recursos mais recentes do C#. O .NET 5 é emparelhado com o C# 9, que traz muitos recursos novos para a linguagem. Aqui estão alguns destaques:
Registros: tipos de referência com semântica de igualdade baseada em valores e mutação não destrutiva suportada por uma nova
with
expressão.Correspondência de padrões relacionais: Estende os recursos de correspondência de padrões a 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 para acelerar a adoção e o aprendizado do C#, o
Main
método pode ser omitido e um aplicativo tão simples quanto o exemplo a seguir é válido:System.Console.Write("Hello world!");
Ponteiros de função: construções de linguagem que expõem os seguintes opcodes de linguagem intermediária (IL):
ldftn
ecalli
.
Para obter mais informações sobre os recursos disponíveis do C# 9, consulte O que há de novo no C# 9.
Geradores de origem
Além de alguns dos novos recursos C# destacados, os geradores de código-fonte estão entrando em projetos de desenvolvedores. Os geradores de código-fonte permitem que o código executado durante a compilação inspecione seu programa e produza arquivos adicionais que são compilados junto com o resto do código.
Para obter mais informações sobre geradores de origem, consulte Apresentando geradores de código-fonte C# e exemplos de geradores de código-fonte C#.
Atualizações em F#
F# é a linguagem de programação funcional do .NET e, com o .NET 5, os desenvolvedores têm acesso ao F# 5. Um dos novos recursos são as strings interpoladas, semelhantes às strings interpoladas em C#, e até mesmo JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Além da interpolação básica de cordas, há a interpolação digitada. Com interpolação digitada, um determinado tipo deve corresponder ao especificador de formato.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Este formato é semelhante à função que formata sprintf
uma cadeia de caracteres com base em entradas seguras para tipos.
Para obter mais informações, consulte Novidades no F# 5.
Atualizações do Visual Basic
Não há novos recursos de linguagem para Visual Basic no .NET 5. No entanto, com o .NET 5, o suporte do Visual Basic é estendido para:
Description | dotnet new parâmetro |
---|---|
Aplicação de Consola | console |
Biblioteca de classes | classlib |
Aplicação WPF | wpf |
Biblioteca de classes do WPF | wpflib |
Biblioteca de controle personalizado do WPF | wpfcustomcontrollib |
Biblioteca de controle de usuário do WPF | wpfusercontrollib |
Aplicativo Windows Forms (WinForms) | winforms |
Biblioteca de classes do Windows Forms (WinForms) | winformslib |
Projeto de Teste Unitário | mstest |
Projeto de teste NUnit 3 | nunit |
Item de teste NUnit 3 | nunit-test |
Projeto de Teste xUnit | xunit |
Para obter mais informações sobre modelos de projeto da CLI do .NET, consulte dotnet new
.
Novos recursos System.Text.Json
Há novos recursos em e para System.Text.Json:
- Preservar referências e lidar com referências circulares
- Métodos de extensão HttpClient e HttpContent
- Permitir ou escrever 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 condicionalmente propriedades
- Suporta dicionários sem chave de cadeia de caracteres
- Permitir que conversores personalizados manipulem null
- Copiar JsonSerializerOptions
- Criar JsonSerializerOptions com padrões da Web