.NET Core 3.0 - O Suporte a Windows Forms e WPF


  A seguir um resumo compilado sobre algumas novidades relacionadas ao .NET Core 3.0 que deve ser lançada até o final de Abril de 2019 junto com o VS 2019.

Há um só corpo e um só Espírito, como também fostes chamados em uma só esperança da vossa vocação;
Um só Senhor, uma só fé, um só batismo;
Um só Deus e Pai de todos, o qual é sobre todos, e por todos e em todos vós.
Efésios 4:4-6
Porque todos quantos fostes batizados em Cristo já vos revestistes de Cristo.
Nisto não há judeu nem grego; não há servo nem livre; não há macho nem fêmea; porque todos vós sois um em Cristo Jesus.
Gálatas 3:27,28
 

Um das grandes novidades no .NET Core 3.0 é o suporte para aplicativos Windows Desktop(somente no Windows).

Cursos na Udemy

Docker Essencial para Plataforma .NET ASP .NET Core MVC - Criando um site do zero

Sim é isso mesmo, usando um componente do SDK do .NET Core 3.0 chamado Windows Desktop, você pode portar seus aplicativos do Windows Forms e WPF (Windows Presentation Foundation) para o .NET Core.

Obs: O componente Windows Desktop só é compatível e só é incluído no Windows.

Esses frameworks também oferecem suporte ao uso de controles modernos e no estilo Fluent da biblioteca XAML da interface do usuário do Windows (WinUI) por meio de ilhas XAML.

Assim, o componente Windows Desktop faz parte do SDK do .NET Core 3.0 do Windows sendo possível criar um novo aplicativo WPF ou Windows Forms com os seguintes comandos dotnet :

dotnet new wpf
dotnet new winforms

O Visual Studio 2019 Preview 2 adiciona novos modelos de Projeto ao Windows Forms e WPF no .NET Core 3.0, mas ainda não há suporte para designers. Além disso, é possível abrir, iniciar e depurar esses projetos no Visual Studio 2019.

O Visual Studio 2017 15.9 adiciona a capacidade de habilitar versões prévias do .NET Core, mas você precisa ativar essa funcionalidade e esse não é um cenário compatível.

Os novos projetos são os mesmos que os projetos existentes do .NET Core, com algumas adições. Veja aqui a comparação entre o projeto básico de console do .NET Core e um projeto básico do Windows Forms e WPF.

Em um projeto de console do .NET Core, o projeto usa o SDK Microsoft.NET.Sdk e declara uma dependência no .NET Core 3.0 por meio do framework de destino netcoreapp3.0. Para criar um aplicativo desktop do Windows, use o SDK Microsoft.NET.Sdk.WindowsDesktop e escolha qual framerwork de interface do usuário usar:

-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
+   <UseWPF>true</UseWPF>
  </PropertyGroup>
</Project>

Para escolher o Windows Forms ao invés da WPF, defina UseWindowsForms em vez de UseWPF:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
-   <UseWPF>true</UseWPF>
+   <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>

As diretivas UseWPF e UseWindowsForms podem ser definidas como true se o aplicativo usar ambas as estruturas; por exemplo, quando uma caixa de diálogo do Windows Forms hospeda um controle da WPF.

Implantação do MSIX para Windows Desktop

O MSIX é um novo formato de pacote do aplicativo do Windows. Ele pode ser usado para implantar aplicativos desktop do .NET Core 3.0 no Windows 10.

O Projeto de Empacotamento de Aplicativos do Windows, disponível no Visual Studio 2019 Preview 2, permite criar pacotes MSIX com aplicativos .NET Core autosuficientes.

Obs: O arquivo de projeto do .NET Core precisa especificar os runtimes compatíveis na propriedade <RuntimeIdentifiers>:

<RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>

Voltarei ao assunto quando as versões finais forem liberadas.

Se desejar você pode baixar as versões preview do .NET Core 3.0 e do Visual Studio 2019 e ir testando as novas funcionalidades. Neste estágio das versões pouca coisa deve mudar até a liberação final.

Boa semana e um bom estudo...

Referências:


José Carlos Macoratti