Novidades do .NET 5What's new in .NET 5
O .NET 5,0 é a próxima versão principal do .NET Core a seguir 3,1..NET 5.0 is the next major release of .NET Core following 3.1. Nomeamos essa nova versão do .NET 5,0 em vez do .NET Core 4,0 por dois motivos:We named this new release .NET 5.0 instead of .NET Core 4.0 for two reasons:
- Ignoramos os números de versão 4. x para evitar confusão com .NET Framework 4. x.We skipped version numbers 4.x to avoid confusion with .NET Framework 4.x.
- Descartamos "Core" do nome para enfatizar que esta é a principal implementação do .NET em diante.We dropped "Core" from the name to emphasize that this is the main implementation of .NET going forward. O .NET 5,0 dá suporte a mais tipos de aplicativos e mais plataformas do que o .NET Core ou o .NET Framework..NET 5.0 supports more types of apps and more platforms than .NET Core or .NET Framework.
ASP.NET Core 5,0 é baseado no .NET 5,0, mas mantém o nome "Core" para evitar confusão com o ASP.NET MVC 5.ASP.NET Core 5.0 is based on .NET 5.0 but retains the name "Core" to avoid confusing it with ASP.NET MVC 5. Da mesma forma, Entity Framework Core 5,0 mantém o nome "Core" para evitar confusão com Entity Framework 5 e 6.Likewise, Entity Framework Core 5.0 retains the name "Core" to avoid confusing it with Entity Framework 5 and 6.
O .NET 5,0 inclui os seguintes aprimoramentos e novos recursos em comparação com o .NET Core 3,1:.NET 5.0 includes the following improvements and new features compared to .NET Core 3.1:
- Atualizações em C#C# updates
- Atualizações de F #F# updates
- Atualizações de Visual BasicVisual Basic updates
- System.Text.Jssobre novos recursosSystem.Text.Json new features
- Aplicativos de arquivo únicoSingle file apps
- Corte de aplicativoApp trimming
- Intrínsecos do Windows ARM64 e ARM64Windows ARM64 and ARM64 intrinsics
- Suporte de ferramentas para depuração de despejoTooling support for dump debugging
- As bibliotecas de tempo de execução são 80% anotadas para tipos de referência anuláveisThe runtime libraries are 80% annotated for nullable reference types
- Aprimoramentos de desempenho:Performance improvements:
O .NET 5,0 não substitui .NET Framework.NET 5.0 doesn't replace .NET Framework
O .NET 5,0 é a principal implementação do .NET no futuro e .NET Framework 4. x ainda tem suporte..NET 5.0 is the main implementation of .NET going forward and .NET Framework 4.x is still supported.
Não há planos de portar as tecnologias a seguir de .NET Framework para o .NET 5,0, mas há alternativas no .NET 5,0:There are no plans to port the following technologies from .NET Framework to .NET 5.0, but there are alternatives in .NET 5.0:
TecnologiaTechnology | Alternativa recomendadaRecommended alternative |
---|---|
Web FormsWeb Forms | ASP.NET Core mais ou Razor PagesASP.NET Core Blazor or Razor Pages |
Windows Workflow (WF)Windows Workflow (WF) | CoreWF de código-fonte aberto ou Elsa-WorkflowOpen-source CoreWF or Elsa-Workflow |
Windows Communication FoundationWindows Communication Foundation
A implementação original do Windows Communication Foundation (WCF) era suportada apenas no Windows.The original implementation of Windows Communication Foundation (WCF) was only supported on Windows. No entanto, há uma porta do cliente disponível no .NET Foundation.However, there is a client port available from the .NET Foundation. Ele é totalmente de software livre , de plataformacruzada e tem suporte da Microsoft.It is entirely open source, cross platform, and supported by Microsoft. Os pacotes principais do NuGet estão listados abaixo:The core NuGet packages are listed below:
- System.ServiceModel.DuplexSystem.ServiceModel.Duplex
- System. ServiceModel. FederationSystem.ServiceModel.Federation
- System.ServiceModel.HttpSystem.ServiceModel.Http
- System.ServiceModel.NetTcpSystem.ServiceModel.NetTcp
- System.ServiceModel.PrimitivesSystem.ServiceModel.Primitives
- {1>System.ServiceModel.Security<1}System.ServiceModel.Security
A comunidade mantém os componentes de servidor que complementam as bibliotecas de cliente mencionadas anteriormente.The community maintains the server components that complement the aforementioned client libraries. O repositório GitHub pode ser encontrado em CoreWCF.The GitHub repository can be found at CoreWCF. Os componentes do servidor não são oficialmente suportados pela Microsoft.The server components are not officially supported by Microsoft. Para obter uma alternativa ao WCF, considere gRPC.For an alternative to WCF, consider gRPC.
O .NET 5,0 não substitui .NET Standard.NET 5.0 doesn't replace .NET Standard
O novo desenvolvimento de aplicativos pode especificar o net5.0
moniker do Framework de destino (TFM) para todos os tipos de projeto, incluindo bibliotecas de classes.New application development can specify the net5.0
target framework moniker (TFM) for all project types, including class libraries. O compartilhamento de código entre as cargas de trabalho do .NET 5 é simplificado, pois tudo o que você precisa é o net5.0
TFM.Sharing code between .NET 5 workloads is simplified in that all you need is the net5.0
TFM.
Para aplicativos e bibliotecas do .NET 5,0, o net5.0
moniker da estrutura de destino (TFM) combina e substitui o netcoreapp
e o netstandard
TFMs.For .NET 5.0 apps and libraries, the net5.0
Target Framework Moniker (TFM) combines and replaces the netcoreapp
and netstandard
TFMs. No entanto, se você planeja compartilhar o código entre as cargas de trabalho .NET Framework, .NET Core e .NET 5, poderá fazer isso especificando netstandard2.0
como seu TFM.However, if you plan to share code between .NET Framework, .NET Core, and .NET 5 workloads, you can do so by specifying netstandard2.0
as your TFM. Para obter mais informações, confira .NET Standard.For more information, see .NET Standard.
Atualizações em C#C# updates
Os desenvolvedores que escrevem aplicativos .NET 5 terão acesso à versão e aos recursos mais recentes do C#.Developers writing .NET 5 apps will have access to the latest C# version and features. O .NET 5 é emparelhado com o C# 9, que traz muitos recursos novos para a linguagem..NET 5 is paired with C# 9, which brings many new features to the language. Aqui estão alguns destaques:Here are a few highlights:
Registros: tipos de referência com semântica de igualdade baseada em valor e mutação não destrutiva com suporte por uma nova
with
expressão.Records: reference types with value-based equality semantics and non-destructive mutation supported by a newwith
expression.Correspondência de padrão relacional: estende os recursos de correspondência de padrões para operadores relacionais para avaliações e expressões comparativa, incluindo padrões lógicos – novas palavras-chave
and
,or
enot
.Relational pattern matching: Extends pattern matching capabilities to relational operators for comparative evaluations and expressions, including logical patterns - new keywordsand
,or
, andnot
.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 o aplicativo tão simples quanto o seguinte é válido:Top-level statements: As a means for accelerating adoption and learning of C#, theMain
method can be omitted and application as simple as the following is valid:System.Console.Write("Hello world!");
Ponteiros de função: constructos de linguagem que expõem os seguintes opcodes de linguagem intermediária (IL):
ldftn
ecalli
.Function pointers: Language constructs that expose the following intermediate language (IL) opcodes:ldftn
andcalli
.
Para obter mais informações sobre os recursos disponíveis do C# 9, consulte o que há de novo no c# 9.For more information on the available C# 9 features, see What's new in C# 9.
Geradores de origemSource generators
Além de alguns dos novos recursos do C# destacados, os geradores de origem estão fazendo seu caminho em projetos de desenvolvedor.In addition to some of the highlighted new C# features, source generators are making their way into developer projects. Os geradores de origem permitem o código que é executado durante a compilação para inspecionar seu programa e produzir arquivos adicionais que são compilados junto com o restante do seu código.Source generators allow code that runs during compilation to inspect your program and produce additional files that are compiled together with the rest of your code.
Para obter mais informações sobre geradores de origem, consulte introdução aos geradores de código -fonte c# e exemplos do gerador de código-fonte c#.For more information on source generators, see Introducing C# source generators and C# source generator samples.
Atualizações de F #F# updates
O f # é a linguagem de programação funcional do .NET e, com o .NET 5, os desenvolvedores têm acesso ao F # 5.F# is the .NET functional programming language, and with .NET 5, developers have access to F# 5. Aqui estão vários recursos novos do F # 5:Here are several new features of F# 5:
Cadeias de caracteres interpoladasInterpolated strings
Semelhante à cadeia de caracteres interpolada em C# e até mesmo JavaScript, F # dá suporte à interpolação de cadeia de caracteres básica.Similar to interpolated string in C#, and even JavaScript, F# supports basic string interpolation.
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 de tipo.In addition to basic string interpolation, there is typed interpolation. Com a interpolação digitada, um determinado tipo deve corresponder ao especificador de formato.With typed interpolation, a given type must match the format specifier.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Isso é semelhante à sprintf
função que formata uma cadeia de caracteres com base em entradas de tipo seguro.This is similar to the sprintf
function that formats a string based on type-safe inputs.
Atualizações de Visual BasicVisual Basic updates
Não há novos recursos de linguagem para Visual Basic no .NET 5.There are no new language features for Visual Basic in .NET 5. No entanto, com o .NET 5, Visual Basic suporte é estendido para:However, with .NET 5, Visual Basic support is extended to:
DescriçãoDescription | Parâmetro dotnet new dotnet new parameter |
---|---|
Aplicativo do ConsoleConsole Application | console |
Biblioteca de classesClass library | classlib |
Aplicativo WPFWPF Application | wpf |
Biblioteca de classes do WPFWPF Class library | wpflib |
Biblioteca de Controles Personalizados do WPFWPF Custom Control Library | wpfcustomcontrollib |
Biblioteca de controle de usuário WPFWPF User Control Library | wpfusercontrollib |
Aplicativo Windows Forms (WinForms)Windows Forms (WinForms) Application | winforms |
Biblioteca de classes do Windows Forms (WinForms)Windows Forms (WinForms) Class library | winformslib |
Projeto de Teste de UnidadeUnit Test Project | mstest |
Projeto de Teste do NUnit 3NUnit 3 Test Project | nunit |
Item de Teste do NUnit 3NUnit 3 Test Item | nunit-test |
Projeto de Teste xUnitxUnit Test Project | xunit |
Para obter mais informações sobre modelos de projeto da CLI do .NET, consulte dotnet new
.For more information on project templates from the .NET CLI, see dotnet new
.
System.Text.Jssobre novos recursosSystem.Text.Json new features
Há novos recursos no e para o System.Text.Jsem:There are new features in and for System.Text.Json:
- Preservar referências e manipular referências circularesPreserve references and handle circular references
- Métodos de extensão HttpClient e HttpContentHttpClient and HttpContent extension methods
- Permitir ou gravar números entre aspasAllow or write numbers in quotes
- Suporte a tipos imutáveis e registros C# 9Support immutable types and C# 9 Records
- Suporte a acessadores de propriedade não públicosSupport non-public property accessors
- Campos de suporteSupport fields
- Ignorar as propriedades condicionalmenteConditionally ignore properties
- Suporte a dicionários de chave não cadeia de caracteresSupport non-string-key dictionaries
- Permitir que conversores personalizados manipulem NULLAllow custom converters to handle null
- Copiar JsonSerializerOptionsCopy JsonSerializerOptions
- Criar JsonSerializerOptions com padrões da WebCreate JsonSerializerOptions with web defaults