Ich entwickle seit einigen Jahren WinForms-Programme. Ich beschäftige mich jetzt mit .NET Core (einschließlich ASP.NET Core MVC). Ich suche nach der neuen GUI-Desktop-Technologie. In Visual Studio 2015 Update 3 wird keine Option zum Erstellen einer GUI-App in .NET Core angezeigt. Was vermisse ich?
100
Antworten:
Ihnen hat nichts gefehlt. MS lieferte keine vernünftige Möglichkeit, GUI-Anwendungen direkt mit .Net Core zu erstellen, bis .Net Core 3, obwohl UWP (Universal Windows Platform) teilweise auf .Net Core basiert.
.Net Core 3.0 unterstützt Winforms und WPF, obwohl es nur für Windows verfügbar ist.
Weitere plattformübergreifende Optionen, die in den letzten zwei Jahren angeboten wurden, finden Sie in anderen Antworten.
quelle
Sie können Electron verwenden und es mit Edge.js resp. Elektronenkante . Mit Edge.js kann Electron (node.js) .net-DLLs aufrufen und umgekehrt. Auf diese Weise können Sie die GUI mit HTML, CSS und JavaScript und das Backend mit .net Core schreiben. Electron selbst ist ebenfalls plattformübergreifend und basiert auf dem Chrom-Browser.
quelle
AvaloniaUI unterstützt jetzt die Ausführung auf .NET Core unter Win / OSX / Linux. XAML, Bindungen und Kontrollvorlagen enthalten.
zB um mit Rider auf MacOs zu entwickeln:
New Solution
-> (oben in der Vorlagenliste) ->More Templates
-> SchaltflächeInstall Template...
-> navigieren Sie zu dem Verzeichnis, in das Sie die Vorlagen in Schritt 1 geklont haben.Reload
SchaltflächeNew Solution
Vorlagenliste angezeigt!quelle
Es ist jetzt möglich, Qt / QtQuick / QML mit .NET Core unter Verwendung von Qml.Net zu verwenden .
Es ist sehr leistungsfähig (nicht "pinvoke chatty"), voll funktionsfähig und funktioniert unter Linux / OSX / Windows.
Schauen Sie sich meinen Blog-Beitrag an, um zu sehen, wie er mit den anderen derzeit verfügbaren Optionen verglichen wird.
PS: Ich bin der Autor.
quelle
Eine Option wäre die Verwendung von Electron mit JavaScript, HTML und CSS für die Benutzeroberfläche und die Erstellung einer .Net Core-Konsolenanwendung, die eine Web-API für die Back-End-Logik selbst hostet. Electron startet die Konsolenanwendung im Hintergrund, wodurch ein Dienst auf localhost verfügbar gemacht wird: xxxx.
Auf diese Weise können Sie die gesamte Back-End-Logik mithilfe von .Net implementieren, um über HTTP-Anforderungen von JavaScript aus auf sie zugreifen zu können.
In diesem Beitrag wird erläutert, wie Sie eine plattformübergreifende Desktop-Anwendung mit Electron und .Net Core erstellen und den Code auf github überprüfen
quelle
Zum Erstellen einer konsolenbasierten Benutzeroberfläche können Sie gui.cs verwenden . Es ist Open Source (von Miguel, dem Erfinder von Xamarin) und läuft auf .NET Core unter Windows, Linux und MacOs.
Es hat die folgenden Komponenten:
Beispiel-Screenshot
quelle
Wir haben eine Open-Source-Lösung für Elektronen mit .net-Kern codiert: Electron.NET . https://github.com/ElectronNET/Electron.NET
Genießen!
quelle
.NET Core 3 unterstützt das Erstellen von Windows-Desktopanwendungen. Ich habe gestern während der .NET-Konferenz eine Demo der Technologie gesehen. Dies ist der einzige Blog-Beitrag, den ich finden konnte, der jedoch den Punkt veranschaulicht: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- Desktop-Anwendungen /
quelle
tl; dr - Ich bin nicht sicher, ob es den .NET Core-Entwicklern möglich sein würde, ein plattformübergreifendes GUI-Framework bereitzustellen.
Ich möchte erwarten, dass ein plattformübergreifendes GUI-Framework für eine frühe Version von .NET Core in den offiziellen Tools (insbesondere einer alten Version des Tools - Sie erwähnen, dass Sie VS 2015 Update 3 ausführen) für eine frühe Version von .NET Core gebündelt wird.
GUI-Frameworks sind sehr umfangreich und hängen von den Hardware-Abstraktionen ab, die bereits auf dem Host-Computer vorhanden sind. Unter Windows gibt es im Allgemeinen einen einzigen Fenstermanager (WM) und eine Desktopumgebung (DE), die von den meisten Benutzern verwendet werden. Unter den vielen verschiedenen Linux-Distributionen, die unterstützt werden, gibt es jedoch eine beliebige Anzahl möglicher WMs und DEs - vorausgesetzt, die meisten Benutzer werden dies auch tun Verwenden Sie X-Server oder Wayland in Kombination mit KDE, Gnome oder XFCE. Aber keine Linux-Installation ist die gleiche.
Die Tatsache, dass sich die Open Source-Community nicht wirklich auf ein "Standard" -Einrichten für eine VM und DE festlegen kann, bedeutet, dass es für die .NET Core-Entwickler ziemlich schwierig wäre, ein GUI-Framework zu erstellen, das auf allen Plattformen und Kombinationen von funktioniert DEs und WMs.
Viele Leute hier haben einige großartige Vorschläge (von der Verwendung von ASP.NET Core zum Erstellen einer Webanwendung und der Verwendung eines Browsers zum Auflisten einer Reihe plattformübergreifender Frameworks). Wenn Sie sich einige der genannten plattformübergreifenden GUI-Frameworks ansehen, werden Sie sehen, wie schwer sie sind.
Am Ende des Tunnels ist jedoch Licht, als Miguel de Icaza Xamarin unter Linux und MacOS auf der .NET Conf in diesem Jahr (2017, wenn Sie dies in Zukunft lesen) naiv laufen ließ. Es könnte sich also lohnen, es zu versuchen das, wenn es fertig ist.
(Sie müssen jedoch ein Upgrade von VS 2015 auf VS 2017 durchführen, um auf die .NET Core 2.0-Funktionen zugreifen zu können.)
quelle
Ich arbeite an einem Projekt, das helfen könnte: https://github.com/gkmo/CarloSharp
Die folgende Anwendung ist in .net mit der Benutzeroberfläche in HTML / JS / CSS (Angular) geschrieben.
quelle
Sie können eine Webanwendung mit .NET Core und MVC entwickeln und in einer universellen Windows-JavaScript-App kapseln: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
Es ist immer noch eine Web-App, aber es ist eine sehr einfache Möglichkeit, eine Web-App in eine Desktop-App umzuwandeln, ohne ein neues Framework zu erlernen oder / und die Benutzeroberfläche neu zu entwickeln. Es funktioniert hervorragend.
Die Unannehmlichkeit ist anders als bei Elektronen oder ReactXP . Das Ergebnis ist eine universelle Windows-App und keine plattformübergreifende Desktop-App.
quelle
Ja, es ist möglich.
.NET Core verfügt standardmäßig über keine Komponenten für native GUI-Anwendungen. Es gibt jedoch ein NuGet-Paket dafür , das gemäß der Antwort von Gregor Biswanger Electron.NET heißt .
Elektron ist ein Framework, mit dem Sie native GUI-Anwendungen auf Node.js erstellen können. Electron.NET ist ein NuGet-Paket, mit dem Sie Electron und Node.js in Ihrem .NET Core-Code verwenden können.
Die gute Nachricht ist, dass Sie nicht JavaScript, Electron oder Node.js lernen müssen, um das NuGet-Paket verwenden zu können. JS-Dateien werden zwar in Ihrer Anwendung ausgeführt, aber vom Erstellungsprozess automatisch generiert.
Sie erstellen lediglich eine ziemlich standardmäßige ASP.NET Core MVC-App. Der einzige Unterschied besteht darin, dass es nicht im Browser, sondern als native Fenster-App ausgeführt wird. Abgesehen von nur wenigen Codezeilen, die für das Electron.NET-Paket spezifisch sind, müssen Sie über ASP.NET Core MVC nichts lernen.
Diese Seite enthält ein Tutorial zur Verwendung. Es enthält auch einige Links zu Beispielcode-Repositorys.
quelle
Nekromantie.
Für den Sonderfall bestehender WinForms-Anwendungen :
Es gibt einen Weg - obwohl ich nicht weiß, wie gut es funktioniert.
Es geht so:
Nehmen Sie die WinForms-Implementierung von Mono.
Portieren Sie es auf .NET Core oder NetStandard.
Kompilieren Sie Ihre WinForms-Anwendungen neu mit den neuen System.Windows.Forms.
Beheben Sie alles, was von NetCore beschädigt werden könnte.
Beten Sie, dass Mono die Teile, die Sie benötigen, einwandfrei implementiert.
(Wenn dies nicht der Fall ist, können Sie jederzeit aufhören zu beten und dem Monoprojekt eine Pull-Anfrage mit Ihrem Fix / Patch / Feature senden.)
Hier ist mein CoreFX WinForms-Repo:
https://github.com/ststeiger/System.CoreFX.Forms
quelle
Es ist eine alte Frage, aber ja, es ist möglich, plattformübergreifende Desktop-Anwendungen (GUI) für Windows, Linux und macOS mit VSCode, .Net Core, C #, gtk3, gtksharp und Glade als GUI-Designer zu entwickeln.
Hier ist wie .
quelle
Wenn Sie
.Net Core 3.0
und höher verwenden, führen Sie die folgenden Schritte aus und Sie können loslegen: (Ich werde .NET Core CLI verwenden , aber Sie können auch Visual Studio verwenden.)md MyWinFormsApp
optionaler Schrittcd MyWinFormsApp
optionaler Schrittdotnet new sln -n MyWinFormsApp
optionaler Schritt, aber es ist eine gute Ideedotnet new winforms -n MyWinFormsApp
Es tut mir leid, das ist nicht optionaldotnet sln add MyWinFormsApp
Tun Sie dies, wenn Sie Schritt 3 ausgeführt habenOkay, Sie können aufhören, meine Antwort zu lesen, und dem
MyWinFormsApp
Projekt Code hinzufügen . Wenn Sie jedoch mit Form Designer arbeiten möchten , lesen Sie weiter.MyWinFormsApp.csproj
Datei und wechseln Sie<TargetFramework>netcoreapp3.1<TargetFramework>
zu<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(wenn Sienetcoreapp3.0
keine Sorge verwenden, ändern Sie sie zu<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
Nachdem Sie diese Schritte ausgeführt haben, sollten Sie Folgendes tun:
Program.cs
Sie den folgenden Präprozessor und fügen Sie ihn hinzuJetzt können Sie das
MyWinFormsApp
Projekt mit Visual Studio 2019 öffnen ( ich denke, Sie können auch Visual Studio 2017 verwenden, bin mir aber nicht sicher ) und doppelklicken aufForm1.cs
und Sie sollten Folgendes sehen:Okay, öffne Toolbox (
Ctrl+W,X
) und füge deiner App Steuerelemente hinzu und mache sie hübsch.Weitere Informationen zu designer @ Windows Forms .NET Core Designer finden Sie hier
quelle