Bisher war .NET Core für viele Szenarien kein Thema, einfach weil die notwendigen Klassen fehlten. In .NET Core 2.1 hat Microsoft massiv in der Klassenbibliothek nachgerüstet. Mit .NET Core 3.0 kommen sogar WPF und Windows Forms nach .NET Core – aber nur für Windows. Was das im Detail bedeutet, wird im Folgenden erklärt.
Nachdem .NET Core 2.0 am 14. August 2017 erschien, hatte Microsoft die Version 2.1 für das erste Quartal 2018 angekündigt. Dass dieser Termin nicht zu halten sein wird, wurde dann im Februar 2018 verkündet und als neues Ziel den Sommer 2018 ausgegeben. Aus dem Sommer wurde dann der Frühsommer: .NET Core 2.1 und damit einhergehend ASP.NET Core 2.1 und Entity Framework 2.1 sind am 30. Mai 2018 erschienen.
Windows Compatibility Pack for .NET Core
Ein wesentliches Thema in den 2.1-Versionen ist die Erweiterung der Funktionen, insbesondere durch die Übernahme weiterer Klassen aus dem klassischen .NET Framework. Das Windows Compatibility Pack for .NET Core bringt viele Hundert Klassen aus der bisherigen .NET Framework Class Library als Nuget-Paket in die .NET-Core-Welt. Das Nuget-Paket Microsoft.Windows.Compatibility ist ein Metapaket über viele andere Nuget-Pakete. Enthalten sind folgende Einzelpakete:
- Win32.Registry (≥ 4.5.0)
- Win32.Registry.AccessControl (≥ 4.5.0)
- Win32.SystemEvents (≥ 4.5.0)
- Windows.Compatibility.Shims (≥ 2.0.0)
- CodeDom (≥ 4.5.0)
- ComponentModel.Composition (≥ 4.5.0)
- Configuration.ConfigurationManager (≥ 4.5.0)
- Data.DataSetExtensions (≥ 4.5.0)
- Data.Odbc (≥ 4.5.0)
- Data.SqlClient (≥ 4.5.0)
- Diagnostics.EventLog (≥ 4.5.0)
- Diagnostics.PerformanceCounter (≥ 4.5.0)
- DirectoryServices (≥ 4.5.0)
- DirectoryServices.AccountManagement (≥ 4.5.0)
- DirectoryServices.Protocols (≥ 4.5.0)
- Drawing.Common (≥ 4.5.0)
- IO.FileSystem.AccessControl (≥ 4.5.0)
- IO.Packaging (≥ 4.5.0)
- IO.Pipes.AccessControl (≥ 4.5.0)
- IO.Ports (≥ 4.5.0)
- Management (≥ 4.5.0)
- Runtime.Caching (≥ 4.5.0)
- Security.AccessControl (≥ 4.5.0)
- Security.Cryptography.Cng (≥ 4.5.0)
- Security.Cryptography.Pkcs (≥ 4.5.0)
- Security.Cryptography.ProtectedData (≥ 4.5.0)
- Security.Cryptography.Xml (≥ 4.5.0)
- Security.Permissions (≥ 4.5.0)
- Security.Principal.Windows (≥ 4.5.0)
- ServiceModel.Duplex (≥ 4.4.1)
- ServiceModel.Http (≥ 4.4.1)
- ServiceModel.NetTcp (≥ 4.4.1)
- ServiceModel.Primitives (≥ 4.4.1)
- ServiceModel.Security (≥ 4.4.1)
- ServiceModel.Syndication (≥ 4.5.0)
- ServiceProcess.ServiceController (≥ 4.5.0)
- Text.Encoding.CodePages (≥ 4.5.0)
- Threading.AccessControl (≥ 4.5.0)
Die Paketnamen sind angelehnt an die bisherigen Namensräume aus der .NET Framework Class Library. Funktionen wie Registry-Zugriff, Datenbankzugriffe per ODBC, LINQ für DataSets, das Code Document Object Model (CodeDOM), Zugriff auf serielle Ports und LDAP-Server wie das Active Directory sowie die Windows Management Instrumentation (WMI), mit der man Informationen aus dem Betriebssystem und einigen Anwendungen auslesen und verändern kann, halten damit Einzug in die Welt von .NET Core. Freilich sind viele dieser Klassen nur auf Windows möglich, daher auch der Name „Windows“ im Compatibility Pack.