Od kilku lat rozwijam programy WinForms. Patrzę teraz na .NET Core (w tym ASP.NET Core MVC). Szukam nowej technologii graficznej GUI. W programie Visual Studio 2015, aktualizacja 3 nie widzę żadnej opcji tworzenia aplikacji z interfejsem graficznym w .NET Core. czego mi brakuje?
110
Odpowiedzi:
Niczego nie brakowało. Firma MS nie dostarczyła żadnego rozsądnego sposobu na tworzenie aplikacji GUI bezpośrednio przy użyciu .Net Core do .Net Core 3, chociaż UWP (Universal Windows Platform) jest częściowo zbudowany na .Net Core.
.Net Core 3.0 obejmuje obsługę Winforms i WPF, chociaż jest dostępna tylko dla systemu Windows.
.Net 6 będzie zawierał .Net MAUI, który będzie obsługiwał aplikacje desktopowe dla systemów Windows i macOS oraz aplikacje mobilne, z aplikacjami komputerowymi Linux obsługiwanymi przez społeczność (nie MS). .Net 5 będzie zawierać podglądową wersję .Net MAUI.
Aby zapoznać się z opcjami dla różnych platform, zobacz inne odpowiedzi.
źródło
AvaloniaUI obsługuje teraz działanie na platformie .NET Core w systemach Win / OSX / Linux. Zawiera XAML, powiązania i szablony formantów.
np. aby rozwijać się na MacOs z Rider:
New Solution
-> (U góry listy szablonów) ->More Templates
-> PrzyciskInstall Template...
-> przejdź do katalogu, w którym sklonowałeś szablony w kroku 1.Reload
przyciskNew Solution
szablonów!źródło
Możesz użyć Electron i połączyć go z Edge.js odp. krawędź elektronu . Edge.js umożliwia elektronowi (node.js) wywoływanie bibliotek .net dll i odwrotnie. W ten sposób możesz napisać GUI z HTML, CSS i JavaScript, a backend z .net core. Sam Electron jest również wieloplatformowy i oparty na przeglądarce chromu.
źródło
Obecnie można używać Qt / QtQuick / QML z .NET Core, używając Qml.Net .
Jest bardzo wydajny (nie "pinvoke chatty"), w pełni funkcjonalny i działa w systemach Linux / OSX / Windows.
Sprawdź mój post na blogu, aby zobaczyć, jak wypada on w porównaniu z innymi dostępnymi obecnie opcjami.
PS: Jestem autorem.
źródło
Jedną z opcji byłoby użycie Electron z JavaScript, HTML i CSS dla interfejsu użytkownika i zbudowanie aplikacji konsoli .Net Core, która będzie samodzielnie hostować interfejs API sieci Web dla logiki zaplecza. Electron uruchomi w tle aplikację konsolową, która ujawni usługę na localhost: xxxx.
W ten sposób można zaimplementować całą logikę zaplecza za pomocą .Net, aby była dostępna przez żądania HTTP z JavaScript.
Spójrz na ten post, wyjaśnia, jak zbudować wieloplatformową aplikację komputerową z Electron i .Net Core i sprawdzić kod na github
źródło
Do tworzenia interfejsu użytkownika opartego na konsoli, można użyć gui.cs . Jest open source (autorstwa Miguela, twórcy platformy Xamarin) i działa na platformie .Net Core w systemach Windows, Linux i MacOs.
Składa się z następujących elementów:
Przykładowy zrzut ekranu
źródło
zakodowaliśmy rozwiązanie open source dla elektronów z rdzeniem .net: Electron.NET . https://github.com/ElectronNET/Electron.NET
Cieszyć się!
źródło
NET Core 3 będzie obsługiwać tworzenie aplikacji klasycznych systemu Windows. Oglądałem wczoraj demo tej technologii podczas konferencji .NET. To jedyny wpis na blogu, jaki udało mi się znaleźć, ale ilustruje to: https://blogs.msdn.microsoft.com/dotnet/2018/05/07/net-core-3-and-support-for-windows- aplikacje-desktopowe /
źródło
tl; dr - Nie jestem pewien, czy deweloperzy .NET Core mogliby dostarczyć międzyplatformowy framework GUI.
Mam ochotę oczekiwać, że wieloplatformowy framework GUI zostanie dołączony do oficjalnych narzędzi (zwłaszcza stara wersja narzędzi - wspomniałeś, że używasz VS 2015 Update 3) dla wczesnej wersji .NET Core jest trochę przedwczesna.
Struktury GUI są naprawdę dość ciężkie i zależą od abstrakcji sprzętowych już obecnych na maszynie hosta. W systemie Windows jest generalnie jeden menedżer okien (WM) i środowisko graficzne (DE) używane przez większość użytkowników, ale w wielu różnych dystrybucjach Linuksa, które są obsługiwane, istnieje dowolna liczba możliwych WM i DE - przy czym większość użytkowników będzie albo używać X-Server lub Wayland w połączeniu z KDE, Gnome lub XFCE. Ale żadna instalacja Linuksa nie jest taka sama.
Fakt, że społeczność open source nie może tak naprawdę zdecydować się na „standardową” konfigurację maszyny wirtualnej i DE oznacza, że twórcom .NET Core byłoby dość trudno stworzyć strukturę GUI, która działałaby na wszystkich platformach i kombinacjach DE i WM.
Wielu ludzi tutaj ma kilka świetnych sugestii (od używania ASP.NET Core do tworzenia aplikacji sieci Web i używania przeglądarki do wyświetlania listy wielu platform międzyplatformowych). Jeśli spojrzysz na niektóre z wymienionych powyżej platform GUI, zobaczysz, jakie są ciężkie.
Jednak na końcu tunelu jest światło, ponieważ Miguel de Icaza popisał się naiwnie działającym Xamarinem na Linuksie i MacOS na .NET Conf w tym roku (2017, jeśli czytasz to w przyszłości), więc może warto spróbować że kiedy będzie gotowe.
(ale aby uzyskać dostęp do funkcji .NET Core 2.0, musisz zaktualizować wersję VS 2015 do VS 2017)
źródło
Pracuję nad projektem, który może pomóc: https://github.com/gkmo/CarloSharp
Następująca aplikacja jest napisana w .net z interfejsem użytkownika w HTML / JS / CSS (Angular)
źródło
Możesz stworzyć aplikację internetową z .NET Core i MVC i zamknąć ją w uniwersalnej aplikacji JavaScript systemu Windows: https://docs.microsoft.com/en-us/windows/uwp/porting/hwa-create-windows
Wciąż jest to aplikacja internetowa, ale jest to bardzo lekki sposób na przekształcenie aplikacji internetowej w aplikację komputerową bez uczenia się nowego frameworka lub / i przeprojektowywania interfejsu użytkownika i działa świetnie.
Niedogodność jest inna niż na przykład electron czy ReactXP , w rezultacie powstała uniwersalna aplikacja Windows, a nie wieloplatformowa aplikacja komputerowa.
źródło
Tak to mozliwe.
NET Core nie ma żadnych składników dla natywnej aplikacji GUI po wyjęciu z pudełka. Istnieje jednak pakiet NuGet o nazwie Electron.NET , zgodnie z odpowiedzią Gregora Biswangera.
Elektron to framework, który umożliwia tworzenie natywnych aplikacji GUI w oparciu o Node.js. Electron.NET to pakiet NuGet, który umożliwia korzystanie z Electron i Node.js z poziomu kodu .NET Core.
Dobra wiadomość jest taka, że nie musisz uczyć się JavaScript, Electron ani Node.js, aby móc korzystać z pakietu NuGet. Pliki JS działają w aplikacji, ale są automatycznie generowane podczas procesu kompilacji.
Wszystko, co musisz zrobić, to zbudować całkiem standardową aplikację ASP.NET Core MVC. Jedyną różnicą jest to, że zamiast działać w przeglądarce, działa jako natywna aplikacja okienna. Poza kilkoma wierszami kodu specyficznego dla pakietu Electron.NET, nie musisz uczyć się niczego powyżej ASP.NET Core MVC.
Ta strona zawiera samouczek, jak z niego korzystać. Zawiera również linki do przykładowych repozytoriów kodu.
źródło
Nekromancja.
Dla szczególnego przypadku istniejących aplikacji WinForms :
Jest sposób - chociaż nie wiem, jak dobrze działa.
Działa to tak:
weź implementację WinForms z mono.
Przenieś go na .NET Core lub NetStandard.
Ponownie skompiluj aplikacje WinForms do nowego System.Windows.Forms.
Napraw wszystko, co może zostać uszkodzone przez NetCore.
Módlcie się, aby mono bezbłędnie realizowało potrzebne części.
(jeśli tak się nie stanie, zawsze możesz przestać się modlić i wysłać mono-projektowi żądanie ściągnięcia z poprawką / poprawką / funkcją)
Oto moje repozytorium CoreFX WinForms:
https://github.com/ststeiger/System.CoreFX.Forms
źródło
To stare pytanie, ale tak, możliwe jest tworzenie wieloplatformowych aplikacji desktopowych (GUI) dla systemów Windows, Linux i macOS, używając VSCode, .Net Core, C #, gtk3, gtksharp i Glade jako projektanta GUI.
Oto jak .
źródło
Jeśli używasz
.Net Core 3.0
i powyżej, wykonaj następujące kroki i możesz już iść: (mam zamiar używać .NET Core CLI , ale możesz też użyć Visual Studio)md MyWinFormsApp
krok opcjonalnycd MyWinFormsApp
krok opcjonalnydotnet new sln -n MyWinFormsApp
krok opcjonalny, ale to dobry pomysłdotnet new winforms -n MyWinFormsApp
Przepraszam, to nie jest opcjonalnedotnet sln add MyWinFormsApp
zrób to, jeśli wykonałeś krok 3OK, możesz przestać czytać moją odpowiedź i zacząć dodawać kod do
MyWinFormsApp
projektu. ale jeśli chcesz pracować z Projektantem formularzy, czytaj dalej.MyWinFormsApp.csproj
plik i zmień go<TargetFramework>netcoreapp3.1<TargetFramework>
na<TargetFrameworks>net472;netcoreapp3.1</TargetFrameworks>
(jeśli używasznetcoreapp3.0
, nie martw się, zmień go na<TargetFrameworks>net472;netcoreapp3.0</TargetFrameworks>
)ItemGroup
Po wykonaniu tych kroków powinieneś otrzymać:
Program.cs
i dodaj następujący preprocesor-if#if NETCOREAPP3_1 Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif
Teraz możesz otworzyć
MyWinFormsApp
projekt za pomocą Visual Studio 2019 ( myślę, że możesz też użyć Visual Studio 2017, ale nie jestem pewien ) i dwukrotnie kliknąćForm1.cs
i powinieneś zobaczyć to:OK, otwórz Toolbox (
Ctrl+W,X
) i zacznij dodawać elementy sterujące do swojej aplikacji i spraw, by była ładna.Możesz przeczytać więcej o Designer @ Windows Forms .NET Core Designer
źródło
WinForms (i jego projektant wizualny) są dostępne dla platformy .NET Core (jako wersja zapoznawcza) od programu Visual Studio 2019 16.6. Jest całkiem niezły, chociaż czasami muszę otworzyć wersję zapoznawczą Visual Studio 2019 16.7, aby obejść irytujące błędy.
Zobacz ten wpis na blogu: https://devblogs.microsoft.com/dotnet/windows-forms-designer-for-net-core-released/
Ponadto WinForms jest teraz open source: https://github.com/dotnet/winforms
źródło