Condividi tramite


Usare Windows Compatibility Pack per convertire il codice per .NET

Alcuni dei problemi più comuni riscontrati durante la conversione del codice esistente da .NET Framework a .NET sono le dipendenze da API e tecnologie presenti solo in .NET Framework. Windows Compatibility Pack fornisce molte di queste tecnologie ed è quindi molto più semplice compilare applicazioni .NET e librerie .NET Standard.

Il pacchetto di compatibilità è un'estensione logica di .NET Standard 2.0 che aumenta significativamente il set di API. Il codice esistente viene compilato senza quasi modifiche. Per rispettare i principi "il set di API fornite da tutte le implementazioni .NET", .NET Standard non include tecnologie che non funzionano in tutte le piattaforme, ad esempio le API per Registro di sistema, Strumentazione gestione Windows (WMI) o reflection emit. Windows Compatibility Pack si sovrappone a .NET Standard e consente l'accesso a queste tecnologie solo Windows. È particolarmente utile per i clienti che vogliono passare a .NET ma prevedono di rimanere sulla piattaforma Windows, almeno come primo passo. In questo scenario, puoi usare tecnologie solo Windows per rimuovere l'ostacolo alla migrazione.

Contenuto del pacchetto

Windows Compatibility Pack viene fornito tramite il pacchetto NuGet Microsoft.Windows.Compatibility ed è possibile farvi riferimento dai progetti destinati a .NET o .NET Standard.

Include circa 20.000 API, incluse API solo per Windows e API multipiattaforma per le aree tecnologiche seguenti:

  • Tabelle codici
  • CodeDom
  • Impostazione
  • Servizi directory
  • Disegno
  • ODBC
  • Autorizzazioni
  • Porti
  • Elenchi di controllo degli accessi (ACL) di Windows
  • Windows Communication Foundation (WCF)
  • Crittografia di Windows
  • Registro eventi di Windows
  • Strumentazione gestione Windows (WMI)
  • Contatori delle prestazioni di Windows
  • Registro di sistema di Windows
  • Memorizzazione nella cache di Windows Runtime
  • Servizi Windows

Per altre informazioni, vedere la specifica del pacchetto di compatibilità.

Attività iniziali

  1. Prima di procedere alla conversione, assicurati di esaminare il processo di conversione.

  2. Per la conversione di codice esistente per .NET o .NET Standard, installa il pacchetto NuGet Microsoft.Windows.Compatibility.

    Se si desidera rimanere in ambiente Windows, questo è tutto.

  3. Se vuoi eseguire l'applicazione .NET o la libreria .NET Standard in Linux o macOS, usa l'analizzatore compatibilità della piattaforma per trovare informazioni sull'utilizzo delle API non supportato in tutte le piattaforme.

  4. Rimuovere questi utilizzi di tali API, sostituirli con alternative multipiattaforma o proteggerli con un controllo di piattaforma, ad esempio:

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

Per una demo, vedere il video di Channel 9 dedicato a Windows Compatibility Pack.