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
A portolás előtt mindenképpen tekintse meg a portálási folyamatot.
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.
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.
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.