Windows Compatibility Pack for .NET Core (WCP)
Eintrag zuletzt aktualisiert am: 12.03.2018
Microsoft hat im Noveber 2017 wie auf der
.NET Conf im September 2017 angekündigt eine erste Vorschauversion des "
Windows Compatibility Pack for .NET Core" veröffentlicht. Dabei handelt es sich um ein Nuget-Metapaket mit dem Namen "Microsoft.Windows.Compatibility", das zahlreiche Einzelpakete umfasst. Entwickler können wahlweise die benötigten Einzelpakete oder das Metapaket referenzieren, wobei im letzteren Fall die Deployment-Werkzeuge von .NET Core und
Visual Studio dafür sorgen, dass nur die tatsächlich verwendeten Einzelpakete verbreitet werden. Das neue Paket lässt sich in
.NET Core 2.0- und
.NET Standard 2.0-Projekten referenzieren.
Ein Wiedersehen mit alten Klassen
Das
Windows Compatibility Pack for .NET Core umfasst zahlreiche Klassen aus dem klassischen
.NET Framework, die es dort zum Teil schon seit Version 1.0 gibt, die aber bisher nicht im
.NET Standard 2.0 und damit auch nicht in .NET Core enthalten sind. Das hat bisher die Migration klassischen .NET-Framework-Codes auf das neue .NET Core verhindert beziehungsweise erschwert. Trotz seines Namens laufen Teile dieser Bibliothek nicht nur Windows, sondern auch auf
Linux und MacOS.
Zu den nun neu angebotenen Funktionen gehört der Zugriff auf die Windows-Registry, das
Code Document Object Model (
CodeDOM), das Komprimieren von Dateien, das Lesen und Verändern von Dateiberechtigungen, die Bereitstellung von
Webservices mit der
Windows Communication Foundation (
WCF) und die direkte
Datenbankprogrammierung mit den Klassen
DataSet und
DataReader gegen einen
Microsoft SQL Server.
Microsoft plant weitere Klassen in das Bibliothekpaket aufzunehmen, darunter
ODBC-
Datenbankzugriffe, Grafikbearbeitung und
Caching sowie die
Windows Management Instrumentation (
WMI) für den Zugriff auf Systeminformationen. Laut einem Blogeintrag von Microsoft umfasst das
Windows Compatibility Pack 20.000 Funktionen. Die Zahl bezieht sich aber wohl auf die Endausbaustufe und nicht auf die aktuelle Preview-Version.
Teilweise auch für Linux und MacOS
Anders als der Name "
Windows Compatibility Pack" suggeriert, sind einige der Teilbibliotheken nicht nur auf Windows, sondern auch auf den anderen von .NET Core unterstützten Plattformen
Linux und MacOS verfügbar. Einige Funktionen wie der Windows Registry-Zugriff wären dort jedoch kaum sinnvoll.
Wenn Entwickler Teile des
Windows Compatibility Pack verwenden, die nur für Windows implementiert sind, verlieren sie die Plattformunabhängigkeit. Die Anwendung lässt sich dann zwar noch auf MacOS oder
Linux starten, es kommt aber beim Zugriff auf die betreffenden
APIs zum Laufzeitfehlertyp PlatformNotSupported
Exception. Entwickler können mit der Bedingung if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { … } die Zugriffe auf diese
APIs nur dann durchführen, wenn die Anwendung unter Windows läuft.
Erleichterte Migration
Das neue
Windows Compatibility Pack vereinfacht insbesondere den Umstieg vom klassischen
.NET Framework auf .NET Core für Entwickler, die zumindest vorerst weiterhin ihre Anwendung nur für Windows anbieten wollen. Der Einsatz des
Windows Compatibility Pack kann auch ein erster Schritt in Hinblick auf den Betrieb auf
Linux und Mac sein. Entwickler können auf diesen Betriebssystemen zunächst einen Teil der Funktionen ausblenden und dann schrittweise andere Implementierungen dafür umsetzen.