He estado desarrollando programas WinForms durante algunos años. Ahora estoy investigando .NET Core (incluido ASP.NET Core MVC). Estoy buscando la nueva tecnología de escritorio GUI. En la actualización 3 de Visual Studio 2015, no veo ninguna opción para crear una aplicación GUI en .NET Core. ¿Qué me estoy perdiendo?
103
Respuestas:
No te faltaba nada. MS no envió una forma razonable de crear aplicaciones GUI directamente usando .Net Core hasta .Net Core 3, aunque UWP (Plataforma universal de Windows) está parcialmente construida sobre .Net Core.
.Net Core 3.0 incluye soporte para Winforms y WPF, aunque es solo para Windows.
.Net 6 incluirá .Net MAUI, que admitirá aplicaciones de escritorio y aplicaciones móviles de Windows y macOS, con aplicaciones de escritorio Linux admitidas por la comunidad (no MS). .Net 5 incluirá una versión preliminar de .Net MAUI.
Para conocer las opciones multiplataforma de terceros, consulte otras respuestas.
fuente
AvaloniaUI ahora tiene soporte para ejecutarse sobre .NET Core en Win / OSX / Linux. XAML, enlaces y plantillas de control incluidos.
por ejemplo, para desarrollar en MacOs con Rider:
New Solution
-> (Cerca de la parte superior de la Lista de plantillas) ->More Templates
-> BotónInstall Template...
-> buscar el directorio donde clonó las plantillas en el paso 1.Reload
botónNew Solution
lista de plantillas.fuente
Puede usar Electron y conectarlo con Edge.js resp. borde de electrones . Edge.js permite que electron (node.js) llame a .net dll y viceversa. De esta manera, puede escribir la GUI con HTML, CSS y JavaScript y el backend con .net core. Electron en sí también es multiplataforma y se basa en el navegador de cromo.
fuente
Ahora es posible usar Qt / QtQuick / QML con .NET Core, usando Qml.Net .
Tiene un alto rendimiento (no es "hablador"), tiene todas las funciones y funciona en Linux / OSX / Windows.
Mira mi publicación de blog para ver cómo se compara con las otras opciones que existen actualmente.
PD: soy el autor.
fuente
Una opción sería usar Electron con JavaScript, HTML y CSS para la interfaz de usuario y crear una aplicación de consola .Net Core que aloje automáticamente una API web para la lógica de back-end. Electron iniciará la aplicación de consola en segundo plano que expondrá un servicio en localhost: xxxx.
De esta manera, puede implementar toda la lógica de back-end usando .Net para que sea accesible a través de solicitudes HTTP desde JavaScript.
Eche un vistazo a esta publicación, explica cómo crear una aplicación de escritorio multiplataforma con Electron y .Net Core y verificar el código en github
fuente
Para crear una interfaz de usuario basada en consola, puede utilizar gui.cs . Es de código abierto (de Miguel, creador de Xamarin) y se ejecuta en .Net core en Windows, Linux y MacOs.
Tiene los siguientes componentes:
Captura de pantalla de muestra
fuente
codificamos una solución de código abierto para electron con .net core: Electron.NET . https://github.com/ElectronNET/Electron.NET
¡Disfrutar!
fuente
.NET Core 3 tendrá soporte para crear aplicaciones de escritorio de Windows. Ayer vi una demostración de la tecnología durante la Conferencia .NET. Esta es la única publicación de blog que pude encontrar, pero ilustra el punto: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- aplicaciones-de-escritorio /
fuente
tl; dr : no estoy seguro de que los desarrolladores de .NET Core puedan proporcionar un marco de interfaz gráfica de usuario multiplataforma.
Siento que esperar que se incluya un marco de interfaz gráfica de usuario multiplataforma en las herramientas oficiales (especialmente una versión anterior de las herramientas, mencionas que estás ejecutando la actualización 3 de VS 2015) para una versión anterior de .NET Core es un poco prematuro.
Los marcos de GUI son realmente bastante pesados y dependen de las abstracciones de hardware que ya están presentes en la máquina host. En Windows, generalmente hay un administrador de ventanas único (WM) y un entorno de escritorio (DE) utilizado por la mayoría de los usuarios, pero en las muchas distribuciones diferentes de Linux que son compatibles, hay una cantidad de WM y DE posibles, dado que la mayoría de los usuarios lo harán utilizar X-Server o Wayland en combinación con KDE, Gnome o XFCE. Pero ninguna instalación de Linux es igual.
El hecho de que la comunidad de código abierto realmente no pueda conformarse con una configuración "estándar" para una VM y DE significa que sería bastante difícil para los desarrolladores de .NET Core crear un marco de GUI que funcione en todas las plataformas y combinaciones de DE y WM.
Mucha gente aquí tiene algunas sugerencias excelentes (desde usar ASP.NET Core para construir una aplicación web y usar un navegador hasta enumerar un montón de marcos multiplataforma). Si echa un vistazo a algunos de los marcos de GUI multiplataforma mencionados enumerados, verá lo pesados que son.
Sin embargo, hay luz al final del túnel cuando Miguel de Icaza mostró Xamarin ejecutándose ingenuamente en Linux y MacOS en .NET Conf. este año (2017, si está leyendo esto en el futuro), por lo que podría valer la pena intentarlo. que cuando esté listo.
(pero deberá actualizar de VS 2015 a VS 2017 para acceder a las características de .NET Core 2.0)
fuente
Estoy trabajando en un proyecto que podría ayudar: https://github.com/gkmo/CarloSharp
La siguiente aplicación está escrita en .net con la interfaz de usuario en HTML / JS / CSS (Angular)
fuente
Puede desarrollar una aplicación web con .NET Core y MVC y encapsularla en una aplicación JavaScript universal de Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
Sigue siendo una aplicación web, pero es una forma muy ligera de transformar una aplicación web en una aplicación de escritorio sin tener que aprender un nuevo marco y / o volver a desarrollar la interfaz de usuario, y funciona muy bien.
El inconveniente es diferente a electron o ReactXP, por ejemplo, el resultado es una aplicación universal de Windows y no una aplicación de escritorio multiplataforma.
fuente
Sí, es posible.
.NET Core no tiene ningún componente para la aplicación de GUI nativa lista para usar. Sin embargo, existe un paquete NuGet que se llama Electron.NET , según la respuesta de Gregor Biswanger.
Electrón es un marco que le permite crear aplicaciones GUI nativas sobre Node.js. Electron.NET es un paquete NuGet que le permite utilizar Electron y Node.js desde su código .NET Core.
La buena noticia es que no es necesario que aprenda JavaScript, Electron o Node.js para poder utilizar el paquete NuGet. Los archivos JS se ejecutan dentro de su aplicación, pero el proceso de compilación los genera automáticamente.
Todo lo que debe hacer es crear una aplicación ASP.NET Core MVC bastante estándar. La única diferencia es que, en lugar de ejecutarse en el navegador, se ejecuta como una aplicación nativa con ventana. Además de unas pocas líneas de código específicas del paquete Electron.NET, no necesitará aprender nada por encima de ASP.NET Core MVC.
Esta página proporciona un tutorial sobre cómo usarlo. También contiene algunos enlaces a repositorios de código de muestra.
fuente
Nigromante.
Para el caso especial de las aplicaciones WinForms existentes :
hay una manera, aunque no sé qué tan bien funciona.
Es así:
Tome la implementación de WinForms de mono.
Portelo a .NET Core o NetStandard.
Vuelva a compilar sus aplicaciones WinForms con el nuevo System.Windows.Forms.
Arregle cualquier cosa que NetCore pueda romper.
Ore para que mono implemente las piezas que necesita sin problemas.
(si no es así, siempre puede dejar de orar y enviar al mono-proyecto una solicitud de extracción con su corrección / parche / función)
Aquí está mi repositorio de CoreFX WinForms:
https://github.com/ststeiger/System.CoreFX.Forms
fuente
Es una pregunta antigua, pero sí, es posible desarrollar aplicaciones de escritorio multiplataforma (GUI), para Windows, Linux y macOS, usando VSCode, .Net Core, C #, gtk3, gtksharp y Glade como GUI Designer.
He aquí cómo .
fuente
Si usa
.Net Core 3.0
y superior, siga los siguientes pasos y estará listo para comenzar: (Voy a usar la CLI de .NET Core , pero también puede usar Visual Studio)md MyWinFormsApp
paso opcionalcd MyWinFormsApp
paso opcionaldotnet new sln -n MyWinFormsApp
paso opcional, pero es una buena ideadotnet new winforms -n MyWinFormsApp
Lo siento, esto no es opcionaldotnet sln add MyWinFormsApp
haz esto si hiciste el paso # 3Bien, puede dejar de leer mi respuesta y comenzar a agregar código al
MyWinFormsApp
proyecto. pero si quieres trabajar con Form Designer, sigue leyendo.MyWinFormsApp.csproj
archivo y cambie<TargetFramework>netcoreapp3.1<TargetFramework>
a<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(si está usandonetcoreapp3.0
, no se preocupe, cámbielo a<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
Después de realizar estos pasos, esto es con lo que debería terminar:
Program.cs
y agregue el siguiente preprocesador-siAhora puede abrir el
MyWinFormsApp
proyecto usando Visual Studio 2019 ( creo que también puede usar Visual Studio 2017, pero no estoy seguro ) y haga doble clic enForm1.cs
y debería ver esto:Bien, abra Toolbox (
Ctrl+W,X
) y comience a agregar controles a su aplicación y hágala bonita.Puede leer más sobre el diseñador en Windows Forms .NET Core Designer
fuente