.NET Core 3.1 - Migrando uma aplicação WF para .NET Core


Hoje veremos como migrar aplicações Windows Forms criadas no .NET Framework para o .NET Core 3.1.

A partir da versão 3.0 o .NET Core dá suporte ao Windows Forms (somente no Windows) conforme eu já descrevi neste artigo:
.NET Core 3.0 - O Suporte a Windows Forms e WPF

Hoje veremos como migrar uma aplicação Windows Forms criada no .NET Framework para executar no ambiente .NET Core. Essa tarefa pode ser mais ou menos trabalhosa dependendo da complexidade da sua aplicação e dos pacotes externos que seu projeto Windows Forms utiliza.

Para o exemplo deste artigo eu vou eleger uma aplicação Windows Forms chamada WF_Listview_Imagens bem simples que não usa pacotes externos e assim é bem simples de migrar.

Abaixo vemos esse projeto em execução. Nele o usuário pode selecioniar uma pasta e exibir todas as imagens da pasta e tambémn pode selecionar uma imagem para ver detalhes:

Esta aplicação usa os controles ListView e PictureBox e os controles Button.

Abrindo este projeto no Visual Studio 2019 vemos a estrutura abaixo onde vemos as referência do .NET Framework às bibliotecas usadas no projeto:

Verificando a compatibilidade do projeto

Antes de iniciar a migração, devemos verificar a compatibilidade deste aplicativo com o .NET core. Para verificar isso, precisamos de um aplicativo chamado Portability Analyzer, disponível gratuitamente no GitHub, que você pode baixar no link : Download Portability Analyzer

Descompacte o pacote em uma pasta local e execute o arquivo .exe que vai apresentar a seguinte tela:

Aqui pasta informar o caminho e nome do arquivo .exe da aplicação que desejamos migrar e a seguir basta clicar no botão Analyze:

Será exibido um relatório no formato Excel chamado PortabilityReport.xlsx que pode ser aberto clicando no botão - Open Report (se você tiver o Excel instalado ou um aplicativo que abra arquivos neste formato).

O arquivo aberto vai apresentar um relatório mostrando o nível de compatilibidade em percentual. Se o valor for 100% , como no nosso exemplo, a aplicação é totalmente compatível e não precisa de ajustes.

Como não precisamos fazer nenhum ajuste vamos continuar.

Agora na janela Solution Explorer clique com o botão direito sobre o nome do projeto e a seguir selecione a opção : Unlod Project (Descarregar Projeto)

Agora podemos editar o arquivo de projeto .csproj clicando sobre o nome do projeto e selecionando:
Editar <nome_projeto>

Será aberto o arquivo com o conteúdo exibido na figura abaixo.

Selecione todo o conteúdo e recorte (CTRL+X) e cole (CTRL+C) em um arquivo texto.

A seguir inclua o código abaixo neste arquivo:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

Conforme mostra a figura abaixo:

Aqui definimos :

  • o formato de saída - WinExe
  • o framework de destino : netcoreapp3.1
  • o tipo de projeto : use Windows Forms : true

Salve as informações e na janela Solution Explorer clique com o botão direito do mouse sobre o nome do projeto e agora escolha a opção : Recarregar Projeto (Load Project)

Pronto !!!

Examinando novamente a estrutura do projeto temos o resultado abaixo:

Observe que agora estamos usando o framework Microsoft.NetCore.App.

Agora é só alegria...

Executando o projeto iremos obter o mesmo resultado, só que agora estamos rodando no .NET Core:

Em outro artigo vermos como migrar projetos com referência a pacotes externos. Aguarde...

"Porque o Senhor é justo, e ama a justiça; o seu rosto olha para os retos."
Salmos 11:7

 

Referências:


José Carlos Macoratti