Novidades no .NET 5
O .NET 5 é a próxima versão principal do .NET Core após a 3.1. Esta versão foi denominada .NET 5 em vez do .NET Core 4 por dois motivos:
- Os números de versão 4.x foram ignorados para evitar confusão com o .NET Framework 4.x.
- "Core" foi removido do nome para enfatizar que essa é a principal implementação 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 do C#
- Atualizações do F#
- Atualizações do Visual Basic
- novos recursos do 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
- Melhorias de desempenho:
- Coleta de Lixo (GC)
- System.Text.Json
- System.Text.RegularExpressions
- Pooling de ValueTask assíncrono
- otimizações de tamanho de contêiner
- Muitas outras áreas
O .NET 5 não substitui o .NET Framework
O .NET 5 e versões posteriores são a principal implementação do .NET daqui para frente, mas ainda há suporte para o .NET Framework 4.x. Não há planos para portar as seguintes tecnologias do .NET Framework para o .NET 5, mas há alternativas no .NET:
Tecnologia | Alternativa recomendada |
---|---|
Formulários da Web | 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. É totalmente de software livre, multiplataforma e com suporte da Microsoft. Os principais pacotes NuGet estão listados abaixo:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Os componentes do servidor que complementam as bibliotecas de cliente acima mencionadas estão disponíveis através de 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 o .NET Standard
O novo desenvolvimento de aplicativos pode especificar o net5.0
TFM (Target Framework Moniker) 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 TFMs netcoreapp
e netstandard
. No entanto, se você planeja compartilhar código entre cargas de trabalho do .NET Framework, .NET Core e .NET 5, você pode fazer isso especificando netstandard2.0
como seu TFM. Para obter mais informações, consulte .NET Standard.
Atualizações em C#
Os desenvolvedores que escreverem aplicativos .NET 5 terão acesso à versão e aos recursos mais recentes do C#. O .NET 5 é emparelhado com o C# 9, o que traz muitos novos recursos para o idioma. Aqui estão 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: amplia as capacidades de correspondência de padrões para operadores relacionais em 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 do C#, o método
Main
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 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# destacados, os geradores de código-fonte estão sendo incorporados em projetos de desenvolvimento. Os geradores de origem permitem que o código executado durante a compilação inspecione seu programa e produza arquivos adicionais compilados junto com o restante do código.
Para obter mais informações sobre geradores de código-fonte, consulte Introdução aos geradores de código-fonte em C# e exemplos de geradores de código-fonte C#.
Atualizações do 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 cadeias de caracteres interpoladas, semelhantes a cadeias de caracteres 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 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 de tipo seguro.
Para mais informações, veja O que há de novo no F# 5.
Atualizações do Visual Basic
Não há novos recursos de linguagem para o Visual Basic no .NET 5. No entanto, com o .NET 5, o suporte do Visual Basic é estendido para:
Descrição | parâmetro dotnet new |
---|---|
Aplicativo de console | console |
Biblioteca de classes | classlib |
Aplicativo 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 de Windows Forms (WinForms) | winforms |
Biblioteca de classes do 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 CLI do .NET, consulte dotnet new
.
Novos recursos de System.Text.Json
Há novos recursos dentro e para System.Text.Json:
- Preservar referências e lidar com referências circulares
- Métodos de extensão de serialização em httpClient
- 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 conversores personalizados para lidar com valores nulos
- Copiar JsonSerializerOptions
- Criar JsonSerializerOptions com padrões da Web