Použijte sadu Windows Compatibility Pack k portu kódu do .NET 5+

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

Balíček kompatibility je logické rozšíření sady .NET Standard 2.0 , které výrazně zvyšuje sadu rozhraní API. Existující kód se kompiluje téměř bez úprav. Aby se dodržel svůj příslib "sady rozhraní API, která poskytují všechny implementace .NET", neobsahuje .NET Standard technologie, které nefungují na všech platformách, jako je registr, rozhraní WMI (Windows Management Instrumentation) nebo reflexe, která vyzařují rozhraní API. Sada Windows Compatibility Pack je umístěná nad .NET Standard a poskytuje přístup k těmto technologiím Windows jen pro čtení. Je zvlášť užitečný pro zákazníky, kteří chtějí přejít na .NET, ale plánují zůstat v Windows, alespoň jako první krok. V tomto scénáři můžete použít Windows technologie, které migraci odebírá.

Obsah balíčku

Balíček Windows Compatibility Pack se poskytuje prostřednictvím microsoft.Windows. Kompatibilita NuGet 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 Windows a rozhraní API pro více platforem z následujících technologických oblastí:

  • Znakové stránky
  • Codedom
  • Konfigurace
  • Adresářové služby
  • Kresba
  • ODBC
  • Oprávnění
  • Porty
  • Windows Access Control seznamy (ACL)
  • Windows Communication Foundation (WCF)
  • Windows kryptografie
  • Windows protokolu událostí
  • Windows Management Instrumentation (WMI)
  • Windows čítače výkonu
  • Registr Windows
  • Windows Runtime Ukládání do mezipaměti
  • Služby systému Windows

Další informace najdete ve specifikaci balíčku kompatibility.

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 Microsoft.Windows. Balíček NuGet kompatibility.

    Pokud chcete zůstat v 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 pro více platforem.

  4. Odeberte použití těchto rozhraní API, nahraďte je alternativami pro více platforem nebo je chraň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 si můžete zobrazit ve videu Channel 9 z Windows Compatibility Packu.

Viz také