Новые возможности .NET Core 5

.NET 5 — это следующий основной выпуск .NET Core после выпуска 3.1. Мы назвали этот новый выпуск .NET 5, а не .NET Core 4, по двум причинам:

  • Мы пропустили номера версий 4. x, чтобы избежать путаницы с .NET Framework 4.x.
  • Мы удалили "Core" из имени, чтобы подчеркнуть, что с настоящего момента это основная реализация .NET. .NET 5 поддерживает больше типов приложений и больше платформ, чем .NET Core или .NET Framework.

ASP.NET Core 5.0 основана на .NET 5, но у нее сохраняется имя "Core", чтобы избежать путаницы с ASP.NET MVC 5. Аналогичным образом у Entity Framework Core 5.0 сохраняется имя "Core", чтобы избежать путаницы с Entity Framework 5 и 6.

В .NET 5 включены следующие улучшения и новые функции по сравнению с .NET Core 3.1:

.NET 5 не заменяет .NET Framework

.NET 5 и более поздних версий — это основная реализация .NET, но платформа .NET Framework 4.x по-прежнему поддерживается. Переносить приведенные ниже технологии с .NET Framework на .NET 5 не планируется, но в .NET существуют альтернативные решения.

Технология Рекомендуемое альтернативное решение
Веб-формы ASP.NET Core Blazor или Razor Pages
Рабочий процесс Windows (WF) Elsa-Workflows

Windows Communication Foundation

Исходная реализация Windows Communication Foundation (WCF) поддерживалась только в Windows. Однако есть клиентский порт, доступный из .NET Foundation. Это полностью открытый код, кроссплатформенный и поддерживаемый корпорацией Майкрософт. Ниже перечислены основные пакеты NuGet.

Серверные компоненты, дополняющие перечисленные выше упоминание клиентские библиотеки, доступны через CoreWCF. По состоянию на апрель 2022 года CoreWCF официально поддерживается корпорацией Майкрософт. Однако для альтернативы WCF рассмотрим gRPC.

.NET 5 не заменяет .NET Standard

Разработка новых приложений может указать net5.0 Moniker Target Framework (TFM) для всех типов проектов, включая библиотеки классов. Упрощено совместное использование кода между рабочими нагрузками .NET 5: все, что вам нужно, — net5.0 это TFM.

Для приложений и библиотек net5.0 .NET 5 TFM объединяет и заменяет netcoreapp и netstandard TFM. Однако если планируется совместное использование кода рабочими нагрузками .NET Framework, .NET Core и .NET 5, это можно сделать, указав netstandard2.0 в качестве TFM. Дополнительные сведения см. в статье .NET Standard.

Обновления C#

Разработчики, создающие приложения .NET 5, получат доступ к последним версиям и функциям C#. .NET 5 связан с языком C# 9, в котором предоставлено множество новых функций. Вот некоторые из них.

  • Записи: ссылочные типы с семантикой равенства на основе значений и неразрушительной мутацией, поддерживаемой новым with выражением.

  • Сопоставление реляционных шаблонов: расширяет возможности сопоставления шаблонов реляционным операторам для сравнения вычислений и выражений, включая логические шаблоны — новые ключевое слово and, orи not.

  • Операторы верхнего уровня: как средство ускорения внедрения и обучения C#, Main метод можно опустить, а приложение так же просто, как показано в следующем примере:

    System.Console.Write("Hello world!");
    
  • Указатели функций: языковые конструкции, предоставляющие следующие коды опкодовldftn промежуточного языка (IL): и calli.

Дополнительные сведения о доступных функциях C# 9 см. в разделе Новые возможности C# 9.

Генераторы исходного кода

Генераторы исходного кода, как и другие новые функции C#, становятся частью процесса разработки проектов. Генераторы исходного кода позволяют коду, который выполняется во время компиляции, проверять программу и создавать дополнительные файлы, компилируемые вместе с остальной частью кода.

Дополнительные сведения о генераторах исходного кода см. в статьях Введение в генераторы исходного кода C# и Примеры генераторов исходного кода C#.

Обновления F#

F# — это язык функционального программирования .NET, и с помощью .NET 5 разработчики имеют доступ к F# 5. Одна из новых функций — интерполированные строки, аналогичные интерполированным строкам в C#, и даже JavaScript.

let name = "David"
let age = 36
let message = $"{name} is {age} years old."

Помимо обычной интерполяции строк, существует типизированная интерполяция. При использовании типизированной интерполяции заданный тип должен соответствовать спецификатору формата.

let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."

Этот формат аналогичен sprintf функции, которая форматирует строку на основе типобезопасных входных данных.

Дополнительные сведения см. в статье Новые возможности в F# 5.

Обновления Visual Basic

В .NET 5 отсутствуют новые языковые функции Visual Basic. Однако в .NET 5 поддержка Visual Basic расширена:

Description dotnet new параметр
Консольное приложение console
Библиотека классов classlib
Приложение WPF wpf
Библиотека классов WPF wpflib
Библиотека настраиваемых элементов управления WPF wpfcustomcontrollib
Библиотека пользовательских элементов управления WPF wpfusercontrollib
Приложение Windows Forms (WinForms) winforms
Библиотека классов для Windows Forms (WinForms) winformslib
Проект модульного теста mstest
Тестовый проект NUnit 3 nunit
Элемент теста NUnit 3 nunit-test
Тестовый проект xUnit xunit

Дополнительные сведения о шаблонах проектов из интерфейса командной строки .NET см. в разделе dotnet new.

Новые функции System.Text.Json

В System.Text.Json имеются новые функции:

См. также