Modernización después de actualizar a .NET desde .NET Framework
En este artículo, aprenderá sobre las distintas formas en que puede modernizar la aplicación después de actualizarla desde .NET Framework a .NET. Use la herramienta Asistente para actualización de .NET para actualizar la aplicación a .NET.
Faltan API
Al actualizar una aplicación de .NET Framework, lo más probable es que tenga algunas incompatibilidades. Esto se debe a que .NET Framework es una tecnología solo de Windows y .NET es una tecnología multiplataforma. Algunas bibliotecas no lo son. Por ejemplo, .NET no proporciona API listas para usar para acceder al Registro de Windows, como hizo .NET Framework. El paquete NuGet Microsoft.Win32.Registry
proporciona compatibilidad con el Registro de Windows. Muchas bibliotecas específicas de .NET Framework se han migrado a .NET o .NET Standard y se hospedan en NuGet. Si encuentra que falta una referencia en el proyecto, busque en NuGet.
Paquete de compatibilidad de Windows
Si después de la migración tiene dependencias en las API de .NET Framework que no son compatibles con la nueva versión de .NET, es posible que las encuentre en el paquete NuGet Microsoft.Windows.Compatibility
. Agrega alrededor de 20 000 API al proyecto de .NET, lo que aumenta significativamente el conjunto de API disponible para el proyecto. Estas API incluyen API solo de Windows, como las relacionadas con Instrumental de administración de Windows (WMI) y el registro de eventos de Windows. Para más información, consulte Uso del paquete de compatibilidad de Windows para migrar código a .NET.
Controles del explorador web
Los proyectos que tienen como destino una tecnología de escritorio de Windows, como Windows Presentation Foundation o Windows Forms, pueden incluir un control del explorador web. El control del explorador web proporcionado probablemente se diseñó antes de HTML5 y otras tecnologías web modernas y se considera obsoleto. Microsoft publica el paquete NuGet Microsoft.Web.WebView2
como reemplazo moderno del control del explorador web.
App.config
.NET Framework usa el archivo App.config para cargar la configuración de la aplicación, como las cadenas de conexión y la configuración de los proveedores de registro. El .NET moderno ahora usa el archivo appsettings.json para la configuración de la aplicación. La versión de la CLI del Asistente para actualización controla la conversión de los archivos App.config en appsettings.json, pero la extensión de Visual Studio, no.
Sugerencia
Si no desea usar el archivo appsettings.json, puede agregar el paquete NuGet System.Configuration.ConfigurationManager
a la aplicación y el código compilará y usará el archivo App.config.
Aunque el archivo appsettings.json es la manera moderna de almacenar y recuperar la configuración y las cadenas de conexión, el código no lo usa y sigue confiando en el archivo App.config. Cuando se migró la aplicación, el paquete NuGet System.Configuration.ConfigurationManager
se agregó al proyecto para que el código que usa el archivo App.config continúe compilando.
A medida que las bibliotecas se actualizan a .NET, se modernizan mediante la compatibilidad con appsettings.json en lugar de App.config. Por ejemplo, los proveedores de registro de .NET Framework que se han actualizado para .NET 6 ya no usan App.config para la configuración. Es bueno para usted seguir su dirección y también dejar de usar App.config.
El paquete NuGet proporciona compatibilidad con appsettings.jsonMicrosoft.Extensions.Configuration
.
Realice los pasos siguientes para usar el archivo appsettings.json como proveedor de configuración:
Quite el paquete
System.Configuration.ConfigurationManager
NuGet o la biblioteca si la aplicación actualizada hace referencia a ellos.Agregue el paquete NuGet
Microsoft.Extensions.Configuration.Json
.Cree un archivo denominado appsettings.json.
- Haga clic con el botón derecho en el archivo del proyecto de la ventana Explorador de soluciones y seleccione Agregar>Nuevo elemento...
- En el cuadro de búsqueda, escriba
json
. - Seleccione la plantilla Archivo de configuración JSON de JavaScript y establezca Nombre en appsettings.json.
- Presione Agregar para agregar el nuevo archivo al proyecto.
Establezca el archivo appsettings.json para copiarlo en el directorio de salida.
En la ventana Explorador de soluciones, busque el archivo appsettings.json y establezca los siguientes valores en Propiedades:
- Acción de compilación: contenido
- Copiar en el directorio de salida: copiar siempre
En el código de inicio de la aplicación, debe cargar el archivo de configuración.
El código de inicio de la aplicación varía en función del tipo de proyecto. Por ejemplo, una aplicación WPF usa el archivo
App.xaml.cs
para la configuración global y una aplicación Windows Forms usa el métodoProgram.Main
para el inicio. En cualquier caso, al inicio debe hacer dos cosas:- Cree un miembro
internal static
(Friend Shared
en Visual Basic) al que se pueda acceder desde cualquier lugar de la aplicación. - Durante el inicio, asígnele una instancia a ese miembro.
En el ejemplo siguiente se crea un miembro denominado
Config
, se le asigna una instancia en el métodoMain
y se carga una cadena de conexión: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
- Cree un miembro
Actualice el resto del código para usar las nuevas API de configuración.
Elimine el archivo App.config del proyecto.
Precaución
Asegúrese de que la aplicación se ejecuta correctamente sin el archivo App.config. Realice una copia de seguridad del archivo App.config con el control de código fuente o copie el archivo en otro lugar. Una vez probada la aplicación en detalle, elimine el archivoApp.config.