Uso del paquete de compatibilidad de Windows para migrar código a .NET
Artículo
Algunos de los problemas más comunes que se encuentran al trasladar código existente de .NET Framework a .NET son las dependencias de API y tecnologías que solo se encuentran en .NET Framework. El paquete de compatibilidad de Windows proporciona muchas de estas tecnologías, por lo que es mucho más fácil crear aplicaciones de .NET y bibliotecas de .NET Standard.
El paquete de compatibilidad es una extensión lógica de .NET Standard 2.0 que aumenta considerablemente el conjunto de API. El código existente se compila prácticamente sin modificaciones. Para mantener su promesa de "el conjunto de API que proporcionan todas las implementaciones de .NET", .NET Standard no incluye tecnologías que no puedan funcionar en todas las plataformas, como el Registro, Instrumental de administración de Windows (WMI) o las API de emisión de la reflexión. El paquete de compatibilidad de Windows está un nivel por encima de .NET Standard y proporciona acceso a estas tecnologías que solo son de Windows. Es especialmente útil para los clientes que quieren cambiar a .NET pero piensan permanecer en Windows, al menos como primer paso. En ese escenario, se pueden usar tecnologías solo de Windows para eliminar el obstáculo de la migración.
Contenido del paquete
El paquete de compatibilidad de Windows se proporciona mediante el paquete NuGet Microsoft.Windows.Compatibility y se puede hacer referencia a él desde proyectos para .NET o .NET Standard.
Proporciona unas 20 000 API, incluidas API solo de Windows y de varias plataformas de las siguientes áreas tecnológicas:
Si quiere ejecutar la aplicación de .NET o la biblioteca de .NET Standard en Linux o macOS, use el Analizador de compatibilidad de plataforma para informarse de las API que no funcionan entre plataformas.
Quite esas API, reemplácelas con alternativas multiplataforma o restrínjalas con una comprobación de plataforma, como:
C#
privatestaticstringGetLoggingPath()
{
// 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") isstring 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");
}
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
En este módulo, aprenderá cuándo, por qué y cómo modernizar una aplicación de ASP.NET Framework a ASP.NET Core utilizando el Asistente para actualización.
Entienda el proceso de portabilidad y descubra herramientas que le pueden resultar útiles al realizar la portabilidad de un proyecto de .NET Framework a .NET Core 6.
Obtenga información sobre cómo usar la herramienta Analizador de portabilidad de .NET para evaluar la portabilidad de su código entre las diferentes implementaciones de .NET, incluidos .NET Core, .NET Standard, UWP y Xamarin.