Am 4. Dezember wurde .NET Core 2.2 veröffentlicht. "Wer kann vor einer Woche von den Neuigkeiten überrascht sein?" - Sie fragen und Sie werden Recht haben ... und übrigens, wurden Sie bereits aktualisiert? )
Nun zum Fall. Die neue Version enthält Diagnoseverbesserungen in der Laufzeit, Unterstützung für ARM32 für Windows und Unterstützung für Azure Active Directory für SQL Client. Die größten Verbesserungen dieser Version sind ASP.NET Core.

ASP.NET Core 2.2 und Entity Framework Core 2.2 wurden am selben Tag veröffentlicht.
.NET Core 2.2 für Windows, MacOS und Linux wartet bereits unter folgenden Links auf Sie:
Die Unterstützung für .NET Core 2.2 ist in Visual Studio 15.9 , Visual Studio für Mac und Visual Studio Code enthalten.
Docker-Container sind unter Microsoft / Dotnet sowohl für .NET Core als auch für ASP.NET Core verfügbar.
Die vollständigsten Informationen zu dieser Version finden Sie in den Versionshinweisen zu .NET Core 2.2 . Es gibt zusätzliche Anweisungen, bekannte Probleme und Möglichkeiten, diese zu umgehen. Bitte teilen Sie uns alle Fehler in diesem Dokument in den Kommentaren zu dotnet / core # 2098 mit .
Abgestufte Zusammenstellung
Die mehrstufige Kompilierung ist eine Funktion, mit der die Laufzeit den JIT-Compiler intelligenter verwenden kann, um sowohl beim Start der Anwendung als auch bei der Maximierung der Leistung während des Betriebs eine bessere Leistung zu erzielen. Die Möglichkeit, dies zu tun, wurde in .NET Core 2.1 als optionale Funktion hinzugefügt und anschließend in .NET Core 2.2 Preview 2 standardmäßig aktiviert. Wir dachten und entschieden, dass wir uns immer noch nicht sicher waren, ob die Aufnahme in die endgültige Version von .NET Core 2.2 sinnvoll ist machte es optional, genau wie in .NET Core 2.1. In .NET Core 3.0 werden wir jedoch vollständig darauf umsteigen.
Laufzeitereignisse
In der Regel ist es sinnvoll, Laufzeitdienste, z. B. GC, JIT oder ThreadPool des aktuellen Prozesses, zu überwachen, um zu verstehen, wie sich diese Dienste während der Lebensdauer der Anwendung verhalten. Auf Windows-Systemen erfolgt dies normalerweise mithilfe von ETW und der Überwachung von ETW-Ereignissen für den aktuellen Prozess. Diese Methode funktioniert immer noch hervorragend, aber die Verwendung von ETW ist nicht immer möglich und kann nach Möglichkeit schwierig sein. Sie arbeiten beispielsweise in einer Umgebung mit unzureichenden Berechtigungen oder unter Linux / macOS.
Ab .NET Core 2.2 können CoreCLR-Ereignisse von der EventListener
Klasse verarbeitet werden. Diese Ereignisse beschreiben das Verhalten von GC, JIT, ThreadPool und Interope. Dies sind dieselben Ereignisse, die jetzt als Teil des CoreCLR ETW-Anbieters für Windows verfügbar sind. Mit diesem Ansatz können Anwendungen Ereignisse verarbeiten oder Transportmechanismen verwenden, um Ereignisse an den Telemetrieaggregationsdienst zu senden.
So können Sie Ereignisse abonnieren:
internal sealed class SimpleEventListener : EventListener {
AccessToken-Unterstützung in SqlConnection
Der ADO.NET-Anbieter für SQL Server, SqlClient, unterstützt jetzt das Festlegen der AccessToken-Eigenschaft, mit der Verbindungen zu SQL Server mithilfe von Azure Active Directory authentifiziert werden können. Um diese Funktion verwenden zu können, müssen Sie ein Zugriffstoken mithilfe der Active Directory-Authentifizierungsbibliothek für .NET abrufen, die im NuGet-Paket von Microsoft.IdentityModel.Clients.ActiveDirectory enthalten ist.
So authentifizieren Sie Verbindungen zu SQL Server mit Azure AD:
Weitere Informationen finden Sie in der Dokumentation zu ADAL.NET und Azure Active Directory .
Code vor Main ausführen
Mit .NET Core können Sie jetzt Code einbetten, bevor Sie die Hauptmethode starten. Dies erfolgt über den Start-Hook. Mit diesen Hooks kann der Host das Verhalten der Anwendung nach ihrer Bereitstellung anpassen, ohne den Code neu erstellen oder ändern zu müssen.
Hier bedeutet dies, dass Hosting-Anbieter ihre eigenen Konfigurationen und Richtlinien erstellen, einschließlich Einstellungen, die möglicherweise das Ladeverhalten des Haupteinstiegspunkts in die Anwendung beeinflussen können, z. B. AssemblyLoadContext. Der Hook kann verwendet werden, um die Ablaufverfolgung einzurichten oder Telemetrie zu implementieren, Rückrufe zu verbinden oder andere Verhaltenseinstellungen, die für eine bestimmte Laufzeitumgebung spezifisch sind. Hooks sind in Bezug auf den Einstiegspunkt eine völlig separate Einheit und erfordern daher keine Änderung des Anwendungscodes.
Eine ausführlichere Beschreibung finden Sie in der Dokumentation .
Windows ARM32
Wir fügen Unterstützung für Windows ARM32 hinzu, ähnlich der, die bereits für Linux ARM32 vorhanden ist, beginnend mit .NET Core 2.1. Windows unterstützt WIN32 dank Windows IoT Core seit einiger Zeit. Im Rahmen der Windows Server 2019-Version wurde Nanoserver um ARM32-Unterstützung erweitert. .NET Core kann jetzt sowohl auf Nanoserver als auch auf IoT Core verwendet werden.
Nanoserver-Docker-Container für ARM32 werden wie immer in Microsoft / Dotnet auf dem Docker Hub angezeigt .
Wir möchten heute .NET Core-Assemblys für Windows ARM32 veröffentlichen, sind jedoch auf einen verspäteten Fehler gestoßen, der das Veröffentlichen sinnlos macht. Wir hoffen, dass Assemblys für .NET Core 2.2.1 um Januar 2019 erscheinen.
.NET Core 2.2 wird unter folgenden Betriebssystemen unterstützt:
- Windows Client: 7, 8.1, 10 (1607+)
- Windows Server: 2008 R2 SP1 +
- macOS: 10.12+
- RHEL: 6+
- Fedora: 26+
- Ubuntu: 16.04+
- Debian: 9+
- SLES: 12+
- openSUSE: 42.3+
- Alpin: 3,7+
Unterstützte Hardwareplattformen:
- x64 - Windows, MacOS und Linux
- x86 - Windows
- ARM32 - Linux (Ubuntu 16.04+, Debian 9+)
- ARM32 - Windows (1809+; verfügbar im Januar)
Fazit
.NET Core 2.2 ist eine Version mit wichtigen Plattformverbesserungen. Wir empfehlen Ihnen dringend, es zu versuchen und uns Ihre Meinung mitzuteilen. Darüber hinaus ist es sinnvoll, die Verbesserungen in ASP.NET Core 2.2 und Entity Framework 2.2 zu verstehen.
Vergessen Sie nicht, dass die Preise für Tickets für DotNext ab dem 1. Januar steigen werden. Persönlich - für tausend und Standard - für zweitausend. Details zu Early Bird finden Sie auf der Website .