Je développe des programmes WinForms depuis quelques années. Je regarde maintenant dans .NET Core (y compris ASP.NET Core MVC). Je recherche la nouvelle technologie de bureau GUI. Dans Visual Studio 2015 mise à jour 3, je ne vois aucune option pour créer une application d'interface graphique dans .NET Core. Qu'est-ce que je rate?
103
Réponses:
Vous ne manquiez de rien. MS n'a fourni aucun moyen raisonnable de créer des applications GUI directement à l'aide de .Net Core jusqu'à .Net Core 3, bien que UWP (Universal Windows Platform) soit partiellement construit sur .Net Core.
.Net Core 3.0 inclut la prise en charge de Winforms et WPF, bien qu'il soit uniquement Windows.
.Net 6 inclura .Net MAUI, qui prendra en charge les applications de bureau Windows et macOS et les applications mobiles, avec les applications de bureau Linux prises en charge par la communauté (et non par MS). .Net 5 comprendra une version préliminaire de .Net MAUI.
Pour les options multiplateformes tierces, consultez les autres réponses.
la source
AvaloniaUI prend désormais en charge l'exécution sur .NET Core sous Win / OSX / Linux. XAML, liaisons et modèles de contrôle inclus.
par exemple pour développer sur MacOs avec Rider:
New Solution
-> (Près du haut de la liste des modèles) ->More Templates
-> BoutonInstall Template...
-> accédez au répertoire dans lequel vous avez cloné les modèles à l'étape 1.Reload
boutonNew Solution
liste des modèles!la source
Vous pouvez utiliser Electron et le câbler avec Edge.js resp. bord d'électrons . Edge.js permet à electron (node.js) d'appeler les dll .net et vice versa. De cette façon, vous pouvez écrire l'interface graphique avec HTML, CSS et JavaScript et le backend avec .net core. Electron lui-même est également multiplateforme et basé sur le navigateur Chrome.
la source
Il est désormais possible d'utiliser Qt / QtQuick / QML avec .NET Core, en utilisant Qml.Net .
Il est très performant (pas "pinvoke chatty"), complet et fonctionne sous Linux / OSX / Windows.
Consultez mon article de blog pour voir comment il se compare aux autres options actuellement disponibles.
PS: Je suis l'auteur.
la source
Une option serait d'utiliser Electron avec JavaScript, HTML et CSS pour l'interface utilisateur et de créer une application de console .Net Core qui hébergera automatiquement une API Web pour la logique back-end. Electron démarrera l'application console en arrière-plan qui exposera un service sur localhost: xxxx.
De cette façon, vous pouvez implémenter toute la logique back-end à l'aide de .Net pour être accessible via des requêtes HTTP à partir de JavaScript.
Jetez un œil à cet article, il explique comment créer une application de bureau multiplateforme avec Electron et .Net Core et vérifier le code sur github
la source
Pour la création de l' interface utilisateur basée sur la console, vous pouvez utiliser gui.cs . Il est open-source (de Miguel, créateur de Xamarin), et fonctionne sur .Net core sur Windows, Linux et MacOs.
Il comprend les éléments suivants:
Exemple de capture d'écran
la source
nous avons codé une solution open source pour électron avec .net core: Electron.NET . https://github.com/ElectronNET/Electron.NET
Prendre plaisir!
la source
.NET Core 3 prendra en charge la création d'applications de bureau Windows. J'ai regardé une démonstration de la technologie hier pendant la conférence .NET. C'est le seul billet de blog que j'ai pu trouver, mais cela illustre ce point: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- applications de bureau /
la source
tl; dr - Je ne suis pas sûr qu'il soit possible pour les développeurs .NET Core de fournir un cadre d'interface graphique multiplateforme.
J'ai envie de m'attendre à ce qu'un framework d'interface graphique multiplateforme soit intégré à l'outillage officiel (en particulier une ancienne version de l'outillage - vous mentionnez que vous exécutez la mise à jour 3 de VS 2015) pour une première version de .NET Core est un peu prématuré.
Les frameworks GUI sont vraiment assez lourds et dépendent des abstractions matérielles déjà présentes sur la machine hôte. Sous Windows, il existe généralement un gestionnaire de fenêtre unique (WM) et un environnement de bureau (DE) utilisé par la plupart des utilisateurs, mais sur les nombreuses distributions de Linux prises en charge, il existe un nombre illimité de WM et de DE possibles - la plupart des utilisateurs le seront soit utiliser X-Server ou Wayland en combinaison avec KDE, Gnome ou XFCE. Mais aucune installation Linux n'est la même.
Le fait que la communauté open source ne puisse pas vraiment se contenter d'une configuration "standard" pour une VM et DE signifie qu'il serait assez difficile pour les développeurs .NET Core de créer un framework GUI qui fonctionnerait sur toutes les plates-formes et combinaisons de DE et WM.
Beaucoup de gens ici ont d'excellentes suggestions (de l'utilisation d'ASP.NET Core pour créer une application Web et l'utilisation d'un navigateur à la liste d'un tas de frameworks multiplateformes). Si vous jetez un œil à certains des frameworks d'interface graphique multiplateformes mentionnés, vous verrez à quel point ils sont lourds.
Cependant, il y a de la lumière au bout du tunnel alors que Miguel de Icaza a montré Xamarin fonctionnant naïvement sur Linux et MacOS à .NET Conf cette année (2017, si vous lisez ceci dans le futur), donc cela vaut peut-être la peine d'essayer que quand c'est prêt.
(mais vous devrez mettre à niveau de VS 2015 à VS 2017 pour accéder aux fonctionnalités .NET Core 2.0)
la source
Je travaille sur un projet qui pourrait aider: https://github.com/gkmo/CarloSharp
L'application suivante est écrite en .net avec l'interface utilisateur en HTML / JS / CSS (Angular)
la source
Vous pouvez développer une application Web avec .NET Core et MVC et l'encapsuler dans une application JavaScript universelle Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
C'est toujours une application Web, mais c'est un moyen très léger de transformer une application Web en application de bureau sans apprendre un nouveau cadre ou / et redévelopper l'interface utilisateur, et cela fonctionne très bien.
L'inconvénient est contrairement à electron ou ReactXP par exemple, le résultat est une application Windows universelle et non une application de bureau multiplateforme.
la source
Oui c'est possible.
.NET Core n'a pas de composants pour l'application GUI native prête à l'emploi. Cependant, il existe un package NuGet qui s'appelle Electron.NET , selon la réponse de Gregor Biswanger.
Electron est un framework qui vous permet de créer des applications GUI natives sur Node.js. Electron.NET est un package NuGet qui vous permet d'utiliser Electron et Node.js à partir de votre code .NET Core.
La bonne nouvelle est que vous n'avez pas besoin d'apprendre JavaScript, Electron ou Node.js pour pouvoir utiliser le package NuGet. Les fichiers JS s'exécutent dans votre application, mais ils sont automatiquement générés par le processus de construction.
Tout ce que vous faites est de créer une application ASP.NET Core MVC assez standard. La seule différence est qu'au lieu de s'exécuter dans le navigateur, il s'exécute comme une application fenêtrée native. Outre quelques lignes de code spécifiques au package Electron.NET, vous n'aurez rien à apprendre au-dessus d'ASP.NET Core MVC.
Cette page fournit un tutoriel sur son utilisation. Il contient également des liens vers des exemples de référentiels de code.
la source
Nécromancie.
Pour le cas particulier des applications WinForms existantes :
il existe un moyen - même si je ne sais pas si cela fonctionne bien.
Cela va comme ceci:
prenez l'implémentation WinForms de mono.
Portez-le vers .NET Core ou NetStandard.
Recompilez vos applications WinForms avec le nouveau System.Windows.Forms.
Corrigez tout ce qui pourrait être endommagé par NetCore.
Priez pour que mono implémente parfaitement les pièces dont vous avez besoin.
(si ce n'est pas le cas, vous pouvez toujours arrêter de prier et envoyer au mono-projet une pull request avec votre correctif / patch / fonctionnalité)
Voici mon dépôt CoreFX WinForms:
https://github.com/ststeiger/System.CoreFX.Forms
la source
C'est une vieille question, mais oui, il est possible de développer des applications de bureau multiplateformes (GUI), pour Windows, Linux et macOS, en utilisant VSCode, .Net Core, C #, gtk3, gtksharp et Glade en tant que GUI Designer.
Voici comment .
la source
Si vous utilisez
.Net Core 3.0
et ci-dessus, procédez comme suit et que vous êtes prêt à partir: (Je vais utiliser .NET Core CLI , mais vous pouvez également utiliser Visual Studio)md MyWinFormsApp
étape facultativecd MyWinFormsApp
étape facultativedotnet new sln -n MyWinFormsApp
étape facultative, mais c'est une bonne idéedotnet new winforms -n MyWinFormsApp
Je suis désolé, ce n'est pas facultatifdotnet sln add MyWinFormsApp
faites ceci si vous avez fait l'étape 3D'accord, vous pouvez arrêter de lire ma réponse et commencer à ajouter du code au
MyWinFormsApp
projet. mais si vous souhaitez travailler avec Form Designer, continuez à lire.MyWinFormsApp.csproj
fichier et changez<TargetFramework>netcoreapp3.1<TargetFramework>
en<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(si vous utiliseznetcoreapp3.0
ne vous inquiétez pas, changez-le en<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
Après avoir effectué ces étapes, voici ce que vous devriez obtenir:
Program.cs
et ajoutez le préprocesseur suivant -siVous pouvez maintenant ouvrir un
MyWinFormsApp
projet à l'aide de Visual Studio 2019 ( je pense que vous pouvez également utiliser Visual Studio 2017, mais je ne suis pas sûr ) et double-cliquez surForm1.cs
et vous devriez voir ceci:D'accord, ouvrez Toolbox (
Ctrl+W,X
) et commencez à ajouter des contrôles à votre application et rendez-la jolie.Vous pouvez en savoir plus sur Designer @ Windows Forms .NET Core Designer
la source