Použití sady Windows Compatibility Pack k přenosu kódu do .NET

Některé z nejběžnějších problémů zjištěných při přenosu existujícího kódu z rozhraní .NET Framework do rozhraní .NET jsou závislosti na rozhraních API a technologiích, které se nacházejí pouze v rozhraní .NET Framework. Sada Windows Compatibility Pack poskytuje mnoho z těchto technologií, takže je mnohem jednodušší vytvářet aplikace .NET a knihovny .NET Standard.

Sada compatibility pack je logické rozšíření .NET Standard 2.0 , které výrazně zvyšuje sadu rozhraní API. Existující kód se zkompiluje s téměř žádnými úpravami. Aby se zachovala jeho příslib "sada rozhraní API, která poskytují všechny implementace .NET", .NET Standard nezahrnuje technologie, které nemůžou fungovat na všech platformách, jako je registr, rozhraní WMI (Windows Management Instrumentation) nebo reflexe generují rozhraní API. Sada Windows Compatibility Pack je nad rozhraním .NET Standard a poskytuje přístup k těmto technologiím jen pro Windows. Je zvlášť užitečné pro zákazníky, kteří chtějí přejít na .NET, ale plánovat zůstat ve Windows, aspoň jako první krok. V tomto scénáři můžete použít technologie jen pro Windows, které odeberou překážku migrace.

Obsah balíčku

Sada Windows Compatibility Pack je poskytována prostřednictvím balíčku NuGet Microsoft.Windows.Compatibility a lze na ní odkazovat z projektů, které cílí na .NET nebo .NET Standard.

Poskytuje přibližně 20 000 rozhraní API, včetně rozhraní API jen pro Windows a multiplatformních rozhraní API z následujících technologických oblastí:

  • Znakové stránky
  • Codedom
  • Konfigurace
  • Adresářové služby
  • Kreslení
  • ODBC
  • Oprávnění
  • Porty
  • Seznamy řízení přístupu systému Windows (ACL)
  • WCF (Windows Communication Foundation)
  • Kryptografie systému Windows
  • Windows EventLog
  • Rozhraní Windows Management Instrumentation (WMI)
  • Čítače výkonu Windows
  • Registr Windows
  • prostředí Windows Runtime Ukládání do mezipaměti
  • Služby Windows

Další informace najdete ve specifikaci sady Compatibility Pack.

Začínáme

  1. Před přenosem se nezapomeňte podívat na proces přenosu.

  2. Při přenosu existujícího kódu do .NET nebo .NET Standard nainstalujte balíček NuGet Microsoft.Windows.Compatibility.

    Pokud chcete zůstat ve Windows, máte všechno nastavené.

  3. Pokud chcete spustit aplikaci .NET nebo knihovnu .NET Standard v Linuxu nebo macOS, pomocí analyzátoru kompatibility platformy vyhledejte použití rozhraní API, která nebudou fungovat napříč platformami.

  4. Buď odeberte využití těchto rozhraní API, nahraďte je alternativami pro různé platformy nebo je zachoďte pomocí kontroly platformy, například:

    private static string GetLoggingPath()
    {
        // Verify the code is running on Windows.
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            using (var key = Registry.CurrentUser.OpenSubKey(@"Software\Fabrikam\AssetManagement"))
            {
                if (key?.GetValue("LoggingDirectoryPath") is string configuredPath)
                    return configuredPath;
            }
        }
    
        // This is either not running on Windows or no logging path was configured,
        // so just use the path for non-roaming user-specific data files.
        var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
        return Path.Combine(appDataPath, "Fabrikam", "AssetManagement", "Logging");
    }
    

Ukázku najdete ve videu channel 9 sady Windows Compatibility Pack.