Tenho desenvolvido programas WinForms há alguns anos. Agora estou olhando para o .NET Core (incluindo ASP.NET Core MVC). Estou procurando a nova tecnologia de desktop GUI. Na atualização 3 do Visual Studio 2015, não consigo ver nenhuma opção para fazer um aplicativo GUI no .NET Core. o que estou perdendo?
101
Respostas:
Você não estava perdendo nada. A MS não lançou nenhuma maneira razoável de criar aplicativos GUI diretamente usando .Net Core até .Net Core 3, embora UWP (Plataforma Universal do Windows) seja parcialmente construída sobre .Net Core.
.Net Core 3.0 inclui suporte para Winforms e WPF, embora seja apenas para Windows.
.Net 6 incluirá .Net MAUI, que oferecerá suporte a aplicativos de desktop e aplicativos móveis do Windows e macOS, com aplicativos de desktop Linux suportados pela comunidade (não MS). .Net 5 incluirá uma versão prévia do .Net MAUI.
Para opções de plataforma cruzada que surgiram nos últimos 2 anos, veja outras respostas.
fonte
Você pode usar Electron e conectá -lo com Edge.js resp. elétron-borda . Edge.js permite que o elétron (node.js) chame .net dll e vice-versa. Desta forma, você pode escrever a GUI com HTML, CSS e JavaScript e o back-end com núcleo .net. O elétron em si também é multiplataforma e baseado no navegador chromium.
fonte
AvaloniaUI agora tem suporte para rodar no .NET Core no Win / OSX / Linux. XAML, associações e modelos de controle incluídos.
por exemplo, para desenvolver em MacOs com Rider:
New Solution
-> (próximo ao topo da Lista de modelos) ->More Templates
-> BotãoInstall Template...
-> navegue até o diretório onde você clonou os modelos na etapa 1.Reload
botãoNew Solution
Lista de Modelos!fonte
Agora é possível usar Qt / QtQuick / QML com .NET Core, usando Qml.Net .
É altamente performant (não "pinvoke chatty"), cheio de recursos e funciona em Linux / OSX / Windows.
Confira a postagem do meu blog para ver como ele se compara às outras opções disponíveis atualmente.
PS: Eu sou o autor.
fonte
Uma opção seria usar Electron com JavaScript, HTML e CSS para IU e construir um aplicativo de console .Net Core que irá hospedar uma API da web para lógica back-end. O Electron iniciará o aplicativo de console em segundo plano que exporá um serviço no localhost: xxxx.
Desta forma, você pode implementar toda a lógica de back-end usando .Net para ser acessível por meio de solicitações HTTP de JavaScript.
Dê uma olhada neste post, ele explica como construir um aplicativo desktop multiplataforma com Electron e .Net Core e verificar o código no github
fonte
Para a criação de UI baseado em console, você pode usar gui.cs . É open-source (de Miguel, criador do Xamarin), e roda em .Net core em Windows, Linux e MacOs.
Possui os seguintes componentes:
Captura de tela de amostra
fonte
codificamos uma solução de código aberto para elétron com núcleo .net: Electron.NET . https://github.com/ElectronNET/Electron.NET
Aproveitar!
fonte
.NET Core 3 terá suporte para a criação de aplicativos de desktop do Windows. Assisti a uma demonstração da tecnologia ontem durante a Conferência .NET. Esta é a única postagem de blog que pude encontrar, mas ilustra bem o ponto: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- aplicativos de desktop /
fonte
tl; dr - Não tenho certeza se seria possível para os desenvolvedores do .NET Core fornecer uma estrutura de interface de usuário de plataforma cruzada.
Eu sinto que esperar que uma estrutura de interface de usuário de plataforma cruzada seja agrupada no conjunto de ferramentas oficial (especialmente uma versão antiga do conjunto de ferramentas - você mencionou que está executando a atualização 3 do VS 2015) para uma versão inicial do .NET Core é um pouco prematuro.
Frameworks de GUI são realmente muito pesados e dependem das abstrações de hardware já presentes na máquina host. No Windows, geralmente há um único gerenciador de janelas (WM) e ambiente de área de trabalho (DE) usado pela maioria dos usuários, mas nas muitas distribuições diferentes do Linux que são suportadas, há qualquer número de WMs e DEs possíveis - garantido que a maioria dos usuários também estar usando o X-Server ou Wayland em combinação com KDE, Gnome ou XFCE. Mas nenhuma instalação do Linux é igual.
O fato de que a comunidade de código aberto não pode realmente estabelecer uma configuração "padrão" para uma VM e DE significa que seria muito difícil para os desenvolvedores do .NET Core criar uma estrutura de GUI que funcionasse em todas as plataformas e combinações de DEs e WMs.
Muitas pessoas aqui têm ótimas sugestões (desde usar o ASP.NET Core para construir um aplicativo da Web e usar um navegador até listar várias estruturas de plataforma cruzada). Se você der uma olhada em alguns dos frameworks GUI multiplataforma mencionados listados, verá como eles são pesados.
No entanto, há luz no fim do túnel quando Miguel de Icaza mostrou o Xamarin rodando ingenuamente no Linux e MacOS no .NET Conf este ano (2017, se você estiver lendo isso no futuro), então pode valer a pena tentar isso quando estiver pronto.
(mas você precisará atualizar do VS 2015 para o VS 2017 para acessar os recursos do .NET Core 2.0)
fonte
Estou trabalhando em um projeto que pode ajudar: https://github.com/gkmo/CarloSharp
O aplicativo a seguir foi escrito em .net com a IU em HTML / JS / CSS (angular)
fonte
Você pode desenvolver um aplicativo da web com .NET Core e MVC e encapsulá-lo em um aplicativo JavaScript universal do Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
Ainda é um aplicativo da web, mas é uma maneira muito leve de transformar um aplicativo da web em um aplicativo de desktop sem aprender uma nova estrutura ou / e desenvolver novamente a IU, e funciona muito bem.
O inconveniente é diferente do elétron ou ReactXP, por exemplo, o resultado é um aplicativo universal do Windows e não um aplicativo de plataforma cruzada para desktop.
fonte
Sim, é possível.
O .NET Core não possui nenhum componente para o aplicativo GUI nativo pronto para uso. No entanto, existe um pacote NuGet para ele que é chamado Electron.NET , de acordo com a resposta de Gregor Biswanger.
Electron é uma estrutura que permite construir aplicativos de GUI nativos com base no Node.js. Electron.NET é um pacote NuGet que permite utilizar Electron e Node.js de dentro de seu código .NET Core.
A boa notícia é que você não precisa aprender JavaScript, Electron ou Node.js para poder usar o pacote NuGet. Os arquivos JS são executados dentro do seu aplicativo, mas são gerados automaticamente pelo processo de construção.
Tudo o que você faz é construir um aplicativo ASP.NET Core MVC bastante padrão. A única diferença é que, em vez de ser executado no navegador, ele é executado como um aplicativo de janela nativo. Além de apenas algumas linhas de código específicas para o pacote Electron.NET, você não precisará aprender nada acima do ASP.NET Core MVC.
Esta página fornece um tutorial sobre como usá-lo. Ele também contém alguns links para exemplos de repositórios de código.
fonte
Necromante.
Para o caso especial de aplicativos WinForms existentes :
Existe uma maneira - embora eu não saiba se funciona bem.
É assim:
Obtenha a implementação WinForms do mono.
Transfira-o para .NET Core ou NetStandard.
Recompile seus aplicativos WinForms contra o novo System.Windows.Forms.
Conserte qualquer coisa que possa estar danificada pelo NetCore.
Ore para que o mono implemente as peças de que você precisa perfeitamente.
(se não, você pode sempre parar de orar e enviar ao mono-projeto uma solicitação de pull com sua correção / patch / recurso)
Este é meu repositório CoreFX WinForms:
https://github.com/ststeiger/System.CoreFX.Forms
fonte
É uma questão antiga, mas sim, é possível desenvolver aplicativos de desktop multiplataforma (GUI), para Windows, Linux e macOS, usando VSCode, .Net Core, C #, gtk3, gtksharp e Glade como GUI Designer.
Aqui está como .
fonte
Se você estiver usando o
.Net Core 3.0
e acima, siga as etapas a seguir e você está pronto para prosseguir: (vou usar o .NET Core CLI , mas você também pode usar o Visual Studio)md MyWinFormsApp
passo opcionalcd MyWinFormsApp
passo opcionaldotnet new sln -n MyWinFormsApp
etapa opcional, mas é uma boa ideiadotnet new winforms -n MyWinFormsApp
Me desculpe, isso não é opcionaldotnet sln add MyWinFormsApp
faça isso se você seguiu a etapa 3Ok, você pode parar de ler minha resposta e começar a adicionar código ao
MyWinFormsApp
projeto. mas se você quiser trabalhar com o Form Designer, continue lendo.MyWinFormsApp.csproj
arquivo e mude<TargetFramework>netcoreapp3.1<TargetFramework>
para<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(se estiver usandonetcoreapp3.0
, não se preocupe, mude para<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
Depois de seguir essas etapas, você deverá obter o seguinte:
Program.cs
e adicione o seguinte pré-processador - seAgora você pode abrir o
MyWinFormsApp
projeto usando o Visual Studio 2019 ( acho que você pode usar o Visual Studio 2017 também, mas não tenho certeza ) e clicar duas vezes emForm1.cs
e você verá isto:Ok, abra a caixa de ferramentas (
Ctrl+W,X
) e comece a adicionar controles ao seu aplicativo e torná-lo bonito.Você pode ler mais sobre designer @ Windows Forms .NET Core Designer
fonte