Compartir a través de


Uso del paquete de compatibilidad de Windows para migrar código a .NET

Algunos de los problemas más comunes que se encuentran al migrar código existente de .NET Framework a .NET son dependencias de las API y las 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 compilar aplicaciones .NET y bibliotecas de .NET Standard.

El paquete de compatibilidad es una extensión lógica de .NET Standard 2.0 que aumenta significativamente el conjunto de API. El código existente se compila sin casi ninguna modificación. Para mantener su promesa de "el conjunto de API que proporcionan todas las implementaciones de .NET", .NET Standard no incluye tecnologías que no pueden funcionar en todas las plataformas, como el registro, el Instrumental de administración de Windows (WMI) o las API de emisión de reflexión. El paquete de compatibilidad de Windows se encuentra encima de .NET Standard y proporciona acceso a estas tecnologías solo de Windows. Es especialmente útil para los clientes que desean pasar a .NET, pero planean permanecer en Windows, al menos como primer paso. En ese escenario, puede 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 a través del paquete NuGet Microsoft.Windows.Compatibility y se puede hacer referencia a ellos desde proyectos que tienen como destino .NET o .NET Standard.

Proporciona aproximadamente 20 000 API, incluidas las API solo de Windows y multiplataforma de las siguientes áreas tecnológicas:

  • Páginas de códigos
  • CodeDom
  • Configuración
  • Servicios de directorio
  • Dibujo
  • ODBC
  • Permisos
  • Puertos
  • Listas de control de acceso de Windows (ACL)
  • Windows Communication Foundation (WCF)
  • Criptografía de Windows
  • Registro de eventos de Windows
  • Instrumental de administración de Windows (WMI)
  • Contadores de rendimiento de Windows
  • Registro de Windows
  • Almacenamiento en caché de Windows Runtime
  • servicios de Windows

Para obtener más información, consulte la especificación del paquete de compatibilidad.

Comienza

  1. Antes de migrar, asegúrese de echar un vistazo al proceso de portabilidad.

  2. Al migrar código existente a .NET o .NET Standard, instale el paquete NuGet Microsoft.Windows.Compatibility.

    Si quieres mantenerte en Windows, estás listo.

  3. Si desea ejecutar la aplicación .NET o la biblioteca de .NET Standard en Linux o macOS, use el analizador de compatibilidad de plataforma para buscar el uso de las API que no funcionarán entre plataformas.

  4. Quite los usos de esas API, reemplácelos por alternativas multiplataforma o guardáelos mediante una comprobación de plataforma, como:

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

Para obtener una demostración, consulte el vídeo channel 9 del paquete de compatibilidad de Windows.