Modernizzare dopo l'aggiornamento a .NET da .NET Framework

In questo articolo verranno illustrati i diversi modi in cui è possibile modernizzare l'app dopo l'aggiornamento da .NET Framework a .NET. Usa lo strumento .NET Upgrade Assistant per aggiornare l'app a .NET.

API mancanti

Quando si aggiorna un'app .NET Framework, è probabile che si verifichino alcune incompatibilità. Questo avviene perché .NET Framework è una tecnologia solo Windows e .NET è una tecnologia multipiattaforma. Alcune librerie non lo sono. Ad esempio, .NET non fornisce API predefinite per accedere al Registro di sistema di Windows come .NET Framework. Il supporto per il Registro di sistema di Windows viene fornito dal pacchetto NuGet Microsoft.Win32.Registry. Molte librerie specifiche di .NET Framework sono state convertite in .NET o .NET Standard e sono ospitate in NuGet. Se si trova un riferimento mancante nel progetto, cerca NuGet.

Windows Compatibility Pack

Se dopo la migrazione sono presenti alcune dipendenze dalle API .NET Framework non supportate nella nuova versione di .NET, è possibile trovarle nel Microsoft.Windows.Compatibility pacchetto NuGet. Aggiunge circa 20.000 API al progetto .NET, aumentando significativamente il set di API disponibile per il progetto. Queste API includono API solo Windows, ad esempio quelle correlate a Strumentazione gestione Windows (WMI) e a EventLog di Windows. Per altre informazioni, fai riferimento a Usare Windows Compatibility Pack per convertire il codice per .NET

Controllo Web browser

I progetti destinati a una tecnologia desktop Windows, ad esempio Windows Presentation Foundation o Windows Form, possono includere un controllo Web browser. Il controllo web browser fornito è stato progettato molto probabilmente prima di HTML5 e altre tecnologie Web moderne ed è considerato obsoleto. Microsoft pubblica il Microsoft.Web.WebView2pacchetto NuGet come sostituzione moderna del controllo web browser.

App.config

.NET Framework usa il file App.config per caricare le impostazioni dell'app, ad esempio le stringhe di connessione e la configurazione dei provider di registrazione. Il .NET moderno usa il file appsettings.json per le impostazioni dell'app. La versione dell'interfaccia della riga di comando di Upgrade Assistant gestisce la conversione dei file App.config in appsettings.json, ma l'estensione di Visual Studio non esegue tali operazioni.

Suggerimento

Se non desideri usare il file appsettings.json, puoi aggiungere il pacchetto NuGet System.Configuration.ConfigurationManager all'app e il codice compilerà e userà il file App.config.

Anche se appsettings.json è il modo moderno per archiviare e recuperare le impostazioni e le stringhe di connessione, la tua app ha ancora il codice che usa il file App.config. Quando è stata eseguita la migrazione dell'app, il pacchetto NuGet System.Configuration.ConfigurationManager è stato aggiunto al progetto in modo che il codice che usa il file App.config continui a essere compilato.

Quando le librerie passano a .NET, si modernizzano supportando appsettings.json anziché App.config. Ad esempio, i provider di registrazione in .NET Framework aggiornati a .NET 6+ non utilizzano più App.config per le impostazioni. È consigliabile seguire la loro direzione e abbandonare l'uso di App.config.

Il supporto per appsettings.json viene fornito dal pacchetto NuGet Microsoft.Extensions.Configuration.

Per usare il file appsettings.json come provider di configurazione, segui questa procedura:

  1. Rimuovi il pacchetto NuGet System.Configuration.ConfigurationManager o la libreria se si fa riferimento all'app aggiornata.

  2. Aggiungere il pacchetto NuGet Microsoft.Extensions.Configuration.Json.

  3. Crea un file denominato appsettings.json.

    1. Fai clic con il pulsante destro del mouse sul file di progetto nella finestra Esplora soluzioni e scegli Aggiungi>Nuovo elemento....
    2. Nella casella di ricerca immettere json.
    3. Seleziona il modello file di configurazione JSON JavaScript e imposta il Nome su appsettings.json.
    4. Premi Aggiungi per aggiungere il nuovo file al progetto.
  4. Impostare il file appsettings.json da copiare nella directory di output.

    Nella finestra Esplora soluzioni, trova il file appsettings.json e impostare le seguenti Proprietà:

    • Azione di compilazione: Contenuto
    • Copia nella directory di output: Copia sempre
  5. Nel codice di avvio dell'app è necessario caricare il file di impostazioni.

    Il codice di avvio per l'app varia in base al tipo di progetto. Ad esempio, un'app WPF usa il file App.xaml.cs per la configurazione globale e un'app Windows Form usa il metodo Program.Main per l'avvio. Indipendentemente da ciò, è necessario eseguire due operazioni all'avvio:

    • Creare un membro internal static (Friend Shared in Visual Basic) accessibile da qualsiasi posizione dell'app.
    • Durante l'avvio assegnare un'istanza a tale membro.

    L'esempio seguente crea un membro denominato Config, lo assegna a un'istanza nel metodo Main e carica un stringa di connessione:

    using Microsoft.Extensions.Configuration;
    
    internal class Program
    {
        internal static IConfiguration Config { get; private set; }
    
        private static void Main(string[] args)
        {
            Config = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();
    
            // Use the config file to get a connection string
            string? myConnectionString = Config.GetConnectionString("database");
    
            // Run the rest of your app
        }
    }
    
    Imports Microsoft.Extensions.Configuration
    
    Module Program
    
        Private _config As IConfiguration
    
        ' Shared not required since Program is a Module
        Friend Property Config As IConfiguration
    
            Get
                Return _config
            End Get
            Private Set(value As IConfiguration)
                _config = value
            End Set
    
        End Property
    
        Sub Main(args As String())
    
            Config = New ConfigurationBuilder() _
                .AddJsonFile("appsettings.json") _
                .Build()
    
            ' Use the config file to get a connection string
            Dim myConnectionString As String = Config.GetConnectionString("database")
    
            ' Run the rest of your app
        End Sub
    End Module
    
  6. Aggiornare il resto del codice per usare le nuove API di configurazione.

  7. Eliminare il file App.config dal progetto.

    Attenzione

    Assicurarsi che l'app venga eseguita correttamente senza il file App.config. Eseguire il backup del file App.config tramite il controllo del codice sorgente o copiando il file altrove. Dopo aver testato accuratamente l'app, eliminare il file App.config.