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:
Rimuovere il pacchetto o la libreria NuGet
System.Configuration.ConfigurationManager
se viene fatto riferimento ad essi dall'app aggiornata.Aggiungere il pacchetto NuGet
Microsoft.Extensions.Configuration.Json
.Creare un file denominato appsettings.json.
- Fare clic con il pulsante destro del mouse sul file di progetto in Esplora Soluzioni e selezionare Aggiungi>Nuovo Elemento.
- Nella casella di ricerca immettere
json
. - Selezionare il modello file di configurazione JSON JavaScript e impostare il Nome su appsettings.json.
- Premere Aggiungi per aggiungere il nuovo file al progetto.
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
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 metodoProgram.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 metodoMain
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
- Creare un membro
Aggiornare il resto del codice per usare le nuove API di configurazione.
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.