Is it possible to make desktop GUI application in .NET Core?
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.
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 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.