Co nowego na platformie .NET 5
.NET 5 to kolejna główna wersja platformy .NET Core po wersji 3.1. Ta wersja nosiła nazwę .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.
- "Core" został porzucony 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 oparty na platformie .NET 5, ale zachowuje nazwę "Core", aby nie mylić go z ASP.NET MVC 5. Podobnie, Entity Framework Core 5.0 zachowuje nazwę "Core", aby uniknąć pomylenia go z 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#
- aktualizacji języka Visual Basic
- nowe funkcje System.Text.Json
- Aplikacje jednoplikowe
- 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 referencyjnych dopuszczających wartość 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 Windows Communication Foundation (WCF) była wspierana tylko w systemie Windows. Istnieje jednak port klienta dostępny w programie .NET Foundation. Jest to całkowicie typu 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 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
Nowe aplikacje mogą określać net5.0
Target Framework Moniker (TFM) dla wszystkich typów projektów, w tym bibliotek klas. Udostępnianie kodu między obciążeniami platformy .NET 5 jest uproszczone: wystarczy net5.0
TFM.
W przypadku aplikacji i bibliotek platformy .NET 5 net5.0
TFM łączy i zastępuje netcoreapp
i netstandard
TFMs. 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 swój 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 semantyką równości opartą na wartościach oraz mutacją niedestrukcyjną, które są obsługiwane przez nowe wyrażenie
with
.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 na najwyższym poziomie: Jako środek przyspieszania wdrażania i nauki języka C#, można pominąć metodę
Main
, a aplikacja tak prosta jak ta w poniższym przykładzie jest poprawna.System.Console.Write("Hello world!");
wskaźniki funkcji: Konstrukcje języka, które uwidaczniają następujące kody operacji języka pośredniego (IL):
ldftn
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.
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 typowana. 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 funkcji sprintf
, która formatuje ciąg na podstawie bezpiecznych typów danych wejściowych.
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 | parametr dotnet new |
---|---|
Aplikacja konsolowa | console |
Biblioteka klas | classlib |
Aplikacja WPF | wpf |
Biblioteka klas WPF | wpflib |
Niestandardowa biblioteka kontrolek 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 i dla System.Text.Json:
- Zachowaj odwołania i zarządzaj odwołaniami cyklicznymi
- metody rozszerzenia serializacji w HttpClient
- Zezwalaj lub zapisuj liczby w cudzysłowach
- 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 wsparcia
- warunkowo ignoruj właściwości
- Obsługa słowników z kluczami innymi niż ciągi znaków
- Zezwól niestandardowym konwerterom na obsługę wartości null
- kopiuj JsonSerializerOptions
- Utwórz JsonSerializerOptions z domyślnymi ustawieniami dla sieci Web
Zobacz też
- Podróż do jednego .NET
- ulepszenia wydajności na platformie .NET 5
- pobierz zestaw .NET SDK