Używanie pakietu zgodności systemu Windows do przenoszenia kodu do platformy .NET

Niektóre typowe problemy występujące podczas przenoszenia istniejącego kodu z programu .NET Framework do platformy .NET to zależności od interfejsów API i technologii, które znajdują się tylko w programie .NET Framework. Pakiet zgodności systemu Windows udostępnia wiele z tych technologii, więc znacznie łatwiej jest tworzyć aplikacje platformy .NET i biblioteki .NET Standard.

Pakiet zgodności to logiczne rozszerzenie platformy .NET Standard 2.0 , które znacznie zwiększa zestaw interfejsów API. Istniejący kod kompiluje się bez żadnych modyfikacji. Aby zachować obietnicę "zestawu interfejsów API, które zapewniają wszystkie implementacje platformy .NET", platforma .NET Standard nie obejmuje technologii, które nie mogą działać na wszystkich platformach, takich jak rejestr, instrumentacja zarządzania Windows (WMI) lub interfejsy API emisji odbicia. Pakiet zgodności systemu Windows znajduje się na platformie .NET Standard i zapewnia dostęp do tych technologii tylko dla systemu Windows. Jest to szczególnie przydatne dla klientów, którzy chcą przejść do platformy .NET, ale planują pozostać w systemie Windows, przynajmniej jako pierwszy krok. W tym scenariuszu można użyć technologii tylko dla systemu Windows, co eliminuje przeszkodę migracji.

Zawartość pakietu

Pakiet zgodności systemu Windows jest dostarczany za pośrednictwem pakietu NuGet Microsoft.Windows.Compatibility i można odwoływać się do projektów przeznaczonych dla platformy .NET lub .NET Standard.

Zapewnia około 20 000 interfejsów API, w tym interfejsów API tylko dla systemu Windows i międzyplatformowych z następujących obszarów technologii:

  • Strony kodowe
  • Codedom
  • Konfigurowanie
  • Usługi katalogowe
  • Rysowanie
  • ODBC
  • Uprawnienia
  • Porty
  • Listy kontroli dostępu do systemu Windows (ACL)
  • Windows Communication Foundation (WCF)
  • Kryptografia systemu Windows
  • Windows EventLog
  • Instrumentacja zarządzania Windows (WMI)
  • Liczniki wydajności systemu Windows
  • Rejestr systemu Windows
  • środowisko wykonawcze systemu Windows Buforowanie
  • Usługi systemu Windows

Aby uzyskać więcej informacji, zobacz specyfikację pakietu zgodności.

Rozpocznij

  1. Przed rozpoczęciem przenoszenia upewnij się, że zapoznaj się z procesem przenoszenia.

  2. Podczas przenoszenia istniejącego kodu na platformę .NET lub .NET Standard zainstaluj pakiet NuGet Microsoft.Windows.Compatibility.

    Jeśli chcesz pozostać w systemie Windows, wszystko jest ustawione.

  3. Jeśli chcesz uruchomić aplikację .NET lub bibliotekę .NET Standard w systemie Linux lub macOS, użyj analizatora zgodności platformy, aby znaleźć użycie interfejsów API, które nie będą działać międzyplatformowo.

  4. Usuń użycie tych interfejsów API, zastąp je alternatywami dla wielu platform lub za pomocą sprawdzania platformy, na przykład:

    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");
    }
    

Aby zapoznać się z pokazem, zapoznaj się z filmem wideo Channel 9 pakietu zgodności systemu Windows.