Co nowego w wersji .NET 5
.NET 5 to kolejna główna wersja platformy .NET Core po wersji 3.1. Nazwaliśmy tę nową wersję .NET 5 zamiast .NET Core 4 z dwóch powodów:
- Pominięto numery wersji 4.x, aby uniknąć pomyłek z programem .NET Framework 4.x.
- Porzuciliśmy wartość "Core" z nazwy, aby podkreślić, że jest to główna implementacja platformy .NET w przyszłości. Platforma .NET 5 obsługuje więcej typów aplikacji i więcej platform niż .NET Core lub .NET Framework.
ASP.NET Core 5.0 jest oparta na platformie .NET 5, ale zachowuje nazwę "Core", aby uniknąć mylące jej z ASP.NET MVC 5. Podobnie program Entity Framework Core 5.0 zachowuje nazwę "Core", aby uniknąć mylące jej z programem Entity Framework 5 i 6.
Platforma .NET 5 zawiera następujące ulepszenia i nowe funkcje w porównaniu z platformą .NET Core 3.1:
- Aktualizacje języka C#
- Aktualizacje języka F#
- Aktualizacje języka Visual Basic
- System.Text.Json — nowe funkcje
- Aplikacje z jednym plikiem
- Przycinanie aplikacji
- Funkcje wewnętrzne systemu Windows Arm64 i Arm64
- Obsługa narzędzi na potrzeby debugowania zrzutu
- Biblioteki środowiska uruchomieniowego mają 80% adnotacji dla typów odwołań dopuszczanych do wartości null
- Ulepszenia wydajności:
Program .NET 5 nie zastępuje programu .NET Framework
.NET 5 i nowsze wersje są główną implementacją platformy .NET w przyszłości, ale program .NET Framework 4.x jest nadal obsługiwany. Nie ma planów przenoszenia następujących technologii z programu .NET Framework do platformy .NET 5, ale istnieją alternatywy na platformie .NET:
Technologia | Zalecana alternatywa |
---|---|
Formularze sieci Web | ASP.NET Core Blazor lub Razor Pages |
Windows Workflow (WF) | Elsa-Workflows |
Windows Communication Foundation
Oryginalna implementacja programu Windows Communication Foundation (WCF) była obsługiwana tylko w systemie Windows. Istnieje jednak port klienta dostępny w programie .NET Foundation. Jest to całkowicie open source, międzyplatformowe i obsługiwane przez firmę Microsoft. Poniżej wymieniono podstawowe pakiety NuGet:
- System.ServiceModel.Duplex
- System.ServiceModel.Federation
- System.ServiceModel.Http
- System.ServiceModel.NetTcp
- System.ServiceModel.Primitives
- System.ServiceModel.Security
Składniki serwera, które uzupełniają wyżej wymienione biblioteki klienckie, są dostępne za pośrednictwem platformy CoreWCF. Od kwietnia 2022 r. platforma CoreWCF jest oficjalnie obsługiwana przez firmę Microsoft. Jednak w przypadku alternatywy dla programu WCF należy rozważyć gRPC.
Platforma .NET 5 nie zastępuje platformy .NET Standard
Tworzenie nowych aplikacji może określać docelową net5.0
strukturę Moniker (TFM) dla wszystkich typów projektów, w tym biblioteki klas. Udostępnianie kodu między obciążeniami platformy .NET 5 jest uproszczone: wszystko, czego potrzebujesz, to net5.0
TFM.
W przypadku aplikacji i bibliotek platformy .NET 5 program net5.0
TFM łączy i zastępuje programy netcoreapp
netstandard
i TFM. Jeśli jednak planujesz udostępnianie kodu między obciążeniami .NET Framework, .NET Core i .NET 5, możesz to zrobić, określając netstandard2.0
jako serwer TFM. Aby uzyskać więcej informacji, zobacz .NET Standard.
Aktualizacje języka C#
Deweloperzy piszący aplikacje platformy .NET 5 będą mieli dostęp do najnowszej wersji i funkcji języka C#. Platforma .NET 5 jest sparowana z językiem C# 9, co zapewnia wiele nowych funkcji w języku. Oto kilka najważniejszych informacji:
Rekordy: Typy referencyjne z semantykami równości opartymi na wartości i mutacją niedestrukcyjną obsługiwaną przez nowe
with
wyrażenie.Dopasowywanie wzorca relacyjnego: rozszerza możliwości dopasowywania wzorców do operatorów relacyjnych na potrzeby ocen porównawczych i wyrażeń, w tym wzorców logicznych — nowych słów kluczowych
and
,or
inot
.Instrukcje najwyższego poziomu: Jako sposób na przyspieszenie wdrażania i uczenia się języka C#,
Main
można pominąć metodę, a aplikacja jest tak prosta, jak w poniższym przykładzie:System.Console.Write("Hello world!");
Wskaźniki funkcji: konstrukcje języka, które uwidacznia następujące operacje
ldftn
języka pośredniego (IL): icalli
.
Aby uzyskać więcej informacji na temat dostępnych funkcji języka C# 9, zobacz Co nowego w języku C# 9.
Generatory źródeł
Oprócz niektórych wyróżnionych nowych funkcji języka C# generatory źródeł umożliwiają tworzenie projektów deweloperskich. Generatory źródeł umożliwiają uruchamianie kodu podczas kompilacji w celu sprawdzenia programu i utworzenia dodatkowych plików skompilowanych razem z resztą kodu.
Aby uzyskać więcej informacji na temat generatorów źródeł, zobacz Introducing C# source generators and C# source generator samples (Wprowadzenie generatorów źródeł języka C# i przykładów generatora źródeł języka C#).
Aktualizacje języka F#
Język F# to funkcjonalny język programowania .NET, a deweloperzy programu .NET 5 mają dostęp do języka F# 5. Jedną z nowych funkcji są ciągi interpolowane, podobne do ciągów interpolowanych w języku C#, a nawet JavaScript.
let name = "David"
let age = 36
let message = $"{name} is {age} years old."
Oprócz podstawowej interpolacji ciągów istnieje interpolacja typowa. W przypadku interpolacji typowej dany typ musi być zgodny ze specyfikatorem formatu.
let name = "David"
let age = 36
let message = $"%s{name} is %d{age} years old."
Ten format jest podobny do sprintf
funkcji, która formatuje ciąg na podstawie bezpiecznych danych wejściowych typu.
Aby uzyskać więcej informacji, zobacz Co nowego w języku F# 5.
Aktualizacje języka Visual Basic
W programie .NET 5 nie ma nowych funkcji językowych dla języka Visual Basic. Jednak w przypadku platformy .NET 5 obsługa języka Visual Basic została rozszerzona na:
opis | dotnet new Parametr |
---|---|
Aplikacja konsolowa | console |
Biblioteka klas | classlib |
Aplikacja WPF | wpf |
Biblioteka klas WPF | wpflib |
Biblioteka kontrolek niestandardowych WPF | wpfcustomcontrollib |
Biblioteka kontroli użytkownika WPF | wpfusercontrollib |
Aplikacja Windows Forms (WinForms) | winforms |
Biblioteka klas formularzy systemu Windows (WinForms) | winformslib |
Projekt testu jednostkowego | mstest |
Projekt testowy NUnit 3 | nunit |
Element testowy NUnit 3 | nunit-test |
Projekt testowy xUnit | xunit |
Aby uzyskać więcej informacji na temat szablonów projektów z poziomu interfejsu wiersza polecenia platformy .NET, zobacz dotnet new
.
System.Text.Json — nowe funkcje
Istnieją nowe funkcje w pliku System.Text.Json i:
- Zachowywanie odwołań i obsługa odwołań cyklicznych
- Metody rozszerzenia HttpClient i HttpContent
- Zezwalaj na liczby w cudzysłowie lub zapisuj je
- Obsługa niezmiennych typów i rekordów języka C# 9
- Obsługa metod dostępu do właściwości innych niż publiczne
- Pola pomocy technicznej
- Warunkowe ignorowanie właściwości
- Obsługa słowników innych niż ciąg-klucz
- Zezwalaj niestandardowym konwerterom na obsługę wartości null
- Kopiowanie plików JsonSerializerOptions
- Tworzenie plików JsonSerializerOptions przy użyciu ustawień domyślnych sieci Web