Die Fehlerliste aus Lektion M2.2 hatte sechs Zeilen, alle zum Datenzugriff. Hinter ihnen warten Stellen, an denen der Compiler nichts sagt und das Programm erst zur Laufzeit stolpert. Diese Lektion geht beide Arten durch, in der Reihenfolge, in der das Auftragsbuch sie trifft.

Das Muster ist immer dasselbe. Eine API ist (1) in .NET auf Windows schon da, (2) nur mit einem Paket da, (3) anders geworden oder (4) gar nicht mehr da. Welche der vier Arten es ist, zeigt Ihnen ein Test, kein Raten. Deshalb haben Sie das Sicherheitsnetz zuerst gebaut.

Was ist wo

Microsofts Dokumentation nennt die Windows Compatibility Pack, das Paket Microsoft.Windows.Compatibility, die rund 20.000 APIs für Windows-Technologien dazugibt: Registry, Ereignisprotokoll, WMI, Leistungsindikatoren, Verzeichnisdienste, Windows-Dienste, Codepages und mehr. Und sie nennt Technologien, für die es in .NET keinen Ersatz gibt. Für das Auftragsbuch haben wir nachgesehen, was auf net10.0-windows mit UseWindowsForms ohne weiteres Paket übersetzt:

API Auftragsbuch auf net10.0-windows
Microsoft.Win32.Registry Fenstermaße (B12) ohne Paket da
System.Diagnostics.EventLog Fehlermeldungen (B12) ohne Paket da
System.Drawing mit PrintDocument Rechnungsdruck (B7) ohne Paket da
System.Configuration mit ConfigurationManager Einstellungen (B2) ohne Paket da
System.Management (WMI) nicht benutzt braucht ein Paket
ServiceController, SerialPort nicht benutzt brauchen ein Paket
System.Data.SqlClient Datenzugriff (B4) braucht ein Paket, und es ist ein anderes
WebBrowser Kundenkarte (B9) da, aber auf dem Internet Explorer aufgebaut
Encoding.GetEncoding(1252) Export (B8) da, aber die Codepage ist nicht angemeldet

Und was es nicht mehr gibt, nach Microsofts Dokumentation: Anwendungsdomänen (AppDomain.CreateDomain wirft PlatformNotSupportedException), .NET Remoting, Code Access Security, Windows Workflow Foundation und System.EnterpriseServices. Einige dieser Aufrufe übersetzen trotzdem und werfen erst zur Laufzeit. Suchen Sie sie früh, mit einem Test. Das Auftragsbuch benutzt keine davon; die Modulprüfung hat eine.