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:

  1. Quite el paquete System.Configuration.ConfigurationManager NuGet o la biblioteca si la aplicación actualizada hace referencia a ellos.

  2. Agregue el paquete NuGet Microsoft.Extensions.Configuration.Json.

  3. Cree un archivo denominado appsettings.json.

    1. Haga clic con el botón derecho en el archivo del proyecto de la ventana Explorador de soluciones y seleccione Agregar>Nuevo elemento...
    2. En el cuadro de búsqueda, escriba json.
    3. Seleccione la plantilla Archivo de configuración JSON de JavaScript y establezca Nombre en appsettings.json.
    4. Presione Agregar para agregar el nuevo archivo al proyecto.
  4. 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
  5. 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étodo Program.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étodo Main 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
    
  6. Actualice el resto del código para usar las nuevas API de configuración.

  7. 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.