Condividi tramite


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. Usare lo strumento Assistente di aggiornamento .NET 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, cercare NuGet.

Pacchetto di Compatibilità Windows

Se dopo la migrazione sono presenti alcune dipendenze dalle API .NET Framework non supportate nella nuova versione di .NET, è possibile trovarle nel pacchetto NuGet Microsoft.Windows.Compatibility. 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 al Registro eventi di Windows. Per altre informazioni, vedere Usare Windows Compatibility Pack per convertire il codice in .NET.

Controllo del browser Web

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 pacchetto NuGet Microsoft.Web.WebView2 come sostituzione moderna del controllo web browser.

App.config

.NET Framework usa il file App.config per caricare le impostazioni per l'app, ad esempio stringhe di connessione e configurazione del provider di log. .NET moderno usa il file appsettings.json per le impostazioni dell'app. La versione CLI dell'Assistente aggiornamento gestisce la conversione dei file App.config in appsettings.json, ma l'estensione di Visual Studio non è in grado di farlo.

Suggerimento

Se non si vuole usare il file appsettings.json, è possibile 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, l'app ha ancora 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 usando il file App.config continui a essere compilato.

Man mano che le librerie vengono aggiornate a .NET, le librerie vengono modernizzare supportando appsettings.json anziché App.config. Ad esempio, i provider di registrazione in .NET Framework aggiornati per .NET 6+ non usano più App.config per le impostazioni. È consigliabile seguire la loro direzione e anche allontanarsi dall'uso di App.config.

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

Seguire questa procedura per usare il file appsettings.json come provider di configurazione:

  1. Rimuovere il pacchetto o la libreria NuGet System.Configuration.ConfigurationManager se viene fatto riferimento ad essi dall'app aggiornata.

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

  3. Creare un file denominato appsettings.json.

    1. Fare clic con il pulsante destro del mouse sul file di progetto in Esplora Soluzioni e selezionare Aggiungi>Nuovo Elemento.
    2. Nella casella di ricerca immettere json.
    3. Selezionare il modello file di configurazione JSON JavaScript e impostare il Nome su appsettings.json.
    4. Premere Aggiungi per aggiungere il nuovo file al progetto.
  4. Impostare il file appsettings.json da copiare nella directory di output.

    In Esplora Soluzioni, individua il file appsettings.json e imposta le seguenti Proprietà:

    • Azione di build: 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 l'installazione 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.

    Nell'esempio seguente viene creato un membro denominato Config, viene assegnata un'istanza nel metodo Main e viene caricata una 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.

    Cautela

    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.