Is it possible to make desktop GUI application in .NET Core?
I have been developing Windows Forms programs for few years. I am now looking into .NET Core (including ASP.NET Core MVC). I am searching for the new GUI desktop technology. In Visual Studio 2015 update 3 I can't see any option to make a GUI app in .NET Core.
What am I missing?
You were not missing anything. Microsoft shipped no reasonable way to create GUI applications directly using .NET Core until .NET Core 3, though UWP (Universal Windows Platform) is partially built on top of .NET Core.
.NET Core 3.0 includes support for Windows Forms and WPF, though it is Windows-only.
.NET 6 will include .NET MAUI, which will support Windows and macOS desktop applications and mobile applications, with Linux desktop applications supported by the community (not MS). .NET 5 will include a preview version of .NET MAUI.
For third-party cross platform options, see other answers.
AvaloniaUI now has support for running on top of .NET Core on Windows, OS X, and Linux. XAML, bindings and control templates included.
E.g. to develop on macOS with Rider:
- Follow instructions to install the Avalonia dotnet new templates
- Open JetBrains Rider and from the Welcome screen,
- Choose New Solution → (near the top of the Templates List) → More Templates → Button Install Template...* → browse to the directory where you cloned the templates at step 1.
- Click the Reload Button
- Behold! Avalonia Templates now appear in the
New Solution
Templates List! - Choose an Avalonia template
- Build and run. See the GUI open before your eyes.
You could use Electron and wire it up with Edge.js resp. electron-edge. Edge.js allows Electron (Node.js) to call .NET DLL files and vice versa.
This way you can write the GUI with HTML, CSS and JavaScript and the backend with .NET Core. Electron itself is also cross platform and based on the Chromium browser.
It is now possible to use Qt, QtQuick, and QML with .NET Core, using Qml.Net.
It is highly performant (not "P/Invoke chatty"), fully featured and works across Linux, OS X, and Windows.
Check out my blog post to see how it compares to the other options out there currently.
PS: I'm the author.