A Windows kompatibilitási csomag használatával portkódot portolhat a .NET-be

A meglévő kód .NET-keretrendszer-ból .NET-be történő portolása során leggyakrabban előforduló problémák egyike az API-któl és technológiáktól való függőség, amelyek csak .NET-keretrendszer találhatók. A Windows kompatibilitási csomag számos ilyen technológiát kínál, így sokkal egyszerűbb a .NET-alkalmazások és a .NET Standard kódtárak létrehozása.

A kompatibilitási csomag a .NET Standard 2.0 logikai bővítménye, amely jelentősen növeli az API-készletet. A meglévő kód fordítása szinte semmilyen módosítással nem jár. A .NET Standard nem tartalmaz olyan technológiákat, amelyek nem működnek minden platformon, például a beállításjegyzékben, a Windows Management Instrumentationban (WMI) vagy a tükröződésben. A Windows kompatibilitási csomag a .NET Standard mellett helyezkedik el, és hozzáférést biztosít ezekhez a csak Windows-alapú technológiákhoz. Különösen hasznos azoknak az ügyfeleknek, akik át szeretnének lépni a .NET-be, de legalább első lépésként a Windowson szeretnének maradni. Ebben a forgatókönyvben csak Windows-technológiák használatával távolíthatja el a migrálási akadályt.

Csomag tartalma

A Windows kompatibilitási csomag a Microsoft.Windows.Compatibility NuGet csomagon keresztül érhető el, és a .NET-et vagy a .NET Standardot megcélzott projektekből lehet hivatkozni.

Körülbelül 20 000 API-t biztosít, köztük a csak Windows rendszerű és platformfüggetlen API-kat a következő technológiai területekről:

  • Kódlapok
  • CodeDom
  • Konfiguráció
  • Címtárszolgáltatások
  • Rajz
  • ODBC
  • Engedélyek
  • Portok
  • Windows hozzáférés-vezérlési listák (ACL)
  • Windows Communication Foundation (WCF)
  • Windows titkosítás
  • Windows EventLog
  • Windows Management Instrumentation (WMI)
  • Windows-teljesítményszámlálók
  • Windows-beállításjegyzék
  • Windows-futtatókörnyezet gyorsítótárazás
  • Windows-szolgáltatások

További információkért tekintse meg a kompatibilitási csomag specifikációját.

Első lépések

  1. A portolás előtt mindenképpen tekintse meg a portálási folyamatot.

  2. A meglévő kód .NET-be vagy .NET Standardba történő portolásakor telepítse a Microsoft.Windows.Compatibility NuGet-csomagot.

    Ha a Windowson szeretne maradni, minden rendben van.

  3. Ha linuxos vagy macOS rendszeren szeretné futtatni a .NET-alkalmazást vagy a .NET Standard kódtárat, a platformkompatibilitás-elemző használatával keresse meg a platformfüggetlen api-k használatát.

  4. Távolítsa el ezeknek az API-knak a használatát, cserélje le őket platformfüggetlen alternatívákra, vagy egy platformellenőrzéssel védje őket, például:

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

A bemutatóért tekintse meg a Windows kompatibilitási csomagjának Channel 9 videóját.