IMHO the real problem is that .NET does not run on all operating systems. That's why we needed Mono on Linux. For a .NET application to work on arbitrary operating systems you would need .NET Core.
Problem here: Microsoft does not provide the means to implement a GUI in .NET Core until version 3. With version 3 you get WinForms and WPF support, but those make your program platform dependent again. That's not what you want.
I am looking forward to build my first cross platform app using AvaloniaUI. I tried their Control Gallery which looks promising.
It is cross platform:
supporting a wide range of Operating Systems such as Windows via .NET Framework and .NET Core, Linux via Xorg, macOS.
Hopefully it's quite complete (I can't judge for myself yet)
Avalonia is ready for General-Purpose Desktop App Development.
And it's free