Modernizar após a atualização para o .NET a partir do .NET Framework

Neste artigo, você aprenderá diferentes maneiras de modernizar seu aplicativo depois que ele for atualizado do .NET Framework para .NET. Use a ferramenta Assistente de Atualização do .NET para atualizar seu aplicativo para o .NET.

APIs ausentes

Ao atualizar um aplicativo .NET Framework, você provavelmente terá algumas incompatibilidades. Isso ocorre porque o .NET Framework é uma tecnologia somente Windows e o .NET é uma tecnologia multiplataforma. Algumas bibliotecas não são. Por exemplo, o .NET não fornece APIs prontas para acessar o Registro do Windows, como o .NET Framework fez. O suporte para o Registro do Windows é fornecido pelo pacote NuGet Microsoft.Win32.Registry. Muitas bibliotecas específicas do .NET Framework foram portadas para .NET ou .NET Standard e estão hospedadas no NuGet. Se você encontrar uma referência ausente em seu projeto, pesquise o NuGet.

Pacote de Compatibilidade do Windows

Se após a migração você tiver algumas dependências nas APIs do .NET Framework que não têm suporte em sua nova versão do .NET, você poderá encontrá-las no pacote NuGet Microsoft.Windows.Compatibility. Ele adiciona cerca de 20.000 APIs ao seu projeto .NET, aumentando significativamente o conjunto de API disponível para seu projeto. Essas APIs incluem APIs somente do Windows, como aquelas relacionadas à WMI (Instrumentação de Gerenciamento do Windows) e ao EventLog do Windows. Para obter mais informações, confira Usar o Pacote de Compatibilidade do Windows para fazer a portabilidade pra o .NET

Controle do navegador da Web

Os projetos direcionados a uma tecnologia de área de trabalho do Windows, como Windows Presentation Foundation ou Windows Forms, podem incluir um controle de navegador da Web. O controle do navegador da Web fornecido provavelmente foi projetado antes de HTML5 e outras tecnologias modernas da Web e é considerado obsoleto. A Microsoft publica o pacote NuGet Microsoft.Web.WebView2 como substituição moderna do controle do navegador da Web.

App.config

O .NET Framework usa o arquivo App.config para carregar configurações do aplicativo, como configuração de cadeias de conexão e de provedores de log. O .NET moderno usa o arquivo appsettings.json para configurações de aplicativo. A versão da CLI do Assistente de Atualização manipula a conversão de arquivos App.config em appsettings.json, mas a extensão do Visual Studio não.

Dica

Se você não quiser usar o arquivo appsettings.json, poderá adicionar o pacote NuGet System.Configuration.ConfigurationManager ao seu aplicativo e seu código será compilado e usará o arquivo App.config.

Embora o appsettings.json seja a maneira moderna de armazenar e recuperar configurações e cadeias de conexão, o aplicativo ainda tem código que usa o arquivo App.config. Quando o aplicativo foi migrado, o pacote NuGet System.Configuration.ConfigurationManager foi adicionado ao projeto para que seu código usando o arquivo App.config continue a ser compilado.

À medida que as bibliotecas forem atualizadas para o .NET, elas serão modernizadas com o suporte ao appsettings.json em vez de App.config. Por exemplo, os provedores de log no .NET Framework que foram atualizados para o .NET 6 e versões posteriores não usam mais o App.config para configurações. É bom que você siga essa orientação e também deixe de usar o App.config.

O suporte para appsettings.json é fornecido pelo pacote NuGet Microsoft.Extensions.Configuration.

Execute as seguintes etapas para usar o arquivo appsettings.json como seu provedor de configuração:

  1. Remova o pacote ou a biblioteca do NuGet System.Configuration.ConfigurationManager se referenciado pelo aplicativo atualizado.

  2. Adicione o pacote NuGet Microsoft.Extensions.Configuration.Json.

  3. Crie um arquivo chamado appsettings.json.

    1. Clique com o botão direito do mouse no arquivo do projeto na janela Gerenciador de Soluções e selecione Adicionar>Novo Item....
    2. Na caixa de pesquisa, insira json.
    3. Selecione o modelo Arquivo de Configuração JSON do JavaScript e defina o Nome como appsettings.json.
    4. Pressione Adicionar para acrescentar o novo arquivo ao projeto.
  4. Defina o arquivo appsettings.json para copiar no diretório de saída.

    Na janela Gerenciador de Soluções, localize o arquivo appsettings.json e defina as seguintes Propriedades:

    • Ação de Build: Conteúdo
    • Copiar para Diretório de Saída: Copiar sempre
  5. No código de inicialização do aplicativo, você precisa carregar o arquivo de configurações.

    O código de inicialização do aplicativo varia de acordo com o tipo de projeto. Por exemplo, um aplicativo WPF usa o arquivo App.xaml.cs para configuração global e um aplicativo Windows Forms usa o método Program.Main para inicialização. Independentemente disso, você precisa fazer duas coisas na inicialização:

    • Crie um membro internal static (Friend Shared no Visual Basic) que possa ser acessado de qualquer lugar em seu aplicativo.
    • Durante a inicialização, atribua uma instância a esse membro.

    O exemplo a seguir cria um membro chamado Config, atribui a ele uma instância no método Main e carrega uma cadeia de conexão:

    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. Atualize o restante do código para usar as novas APIs de configuração.

  7. Exclua o arquivo App.config do projeto.

    Cuidado

    Verifique se o aplicativo é executado corretamente sem o arquivo App.config. Faça backup do arquivo App.config por meio do controle do código-fonte ou copiando o arquivo em outro lugar. Depois de testar completamente seu aplicativo, exclua o arquivo App.config.