3 ms·
C# in its many forms has many challenges, when it comes to desktop software. Mostly that if you want your software to work on any other OS apart from Windows, t
by KronisLV 5y ago
C# in its many forms has many challenges, when it comes to desktop software. Mostly that if you want your software to work on any other OS apart from Windows, there still aren't that many good options.
For example, there is Mono with Gtk#, but it's not really widely used, supported and overall seems to be dying, much like MonoDevelop is: https://www.mono-project.com/docs/faq/gtk/ https://www.mono-project.com/docs/faq/gtk/
After that, there was Xamarin Forms, but they're facing similar problems because in the new .NET there will be a new officially supported framework for GUI apps (they got bought out essentially and there has been little development on their project since): https://docs.microsoft.com/en-us/xamarin/xamarin-forms/ https://docs.microsoft.com/en-us/xamarin/xamarin-forms/
The new .NET cross platform UI still hasn't been released either (well, you can check it out if you have the preview builds) and it might be a while until we can actually judge how well the "official" approach works in its stable form: https://docs.microsoft.com/en-us/dotnet/maui/get-started/installation https://docs.microsoft.com/en-us/dotnet/maui/get-started/ins...
There are third party attempts to fill that vacuum of strong options, like Avalonia, but that's also just work in progress, like every other mentioned approach: http://avaloniaui.net/ http://avaloniaui.net/
Of course, there are also others like Eto: https://github.com/picoe/Eto https://github.com/picoe/Eto
The point i'm making is that due to the history of .NET, cross platform wasn't a priority and therefore there is a really large amount of fragmentation, as well as the developer efforts are spread thin.
Contrast to Java, where you basically had AWT, then eventually Swing, and now there's JavaFX/OpenJFX, all of which are cross platform. Similarly, in Lazarus (a FreePascal IDE) there's the Lazarus Component Library which is where most if not all of the development effort is focused.
It's probably also easier to just have to learn one framework and set of tooling around it and be able to work on most projects out there that use that language, as opposed to there being so many different ones.
- lostmsu 5y agoI don't think the subset of people who used Delphi and later moved to Visual C# would be the ones to care about cross-platform much.
- KronisLV 5y agoHmm, i wouldn't be so sure, since one of the slogans of Pascal (and i guess Delphi too) was "write once, compile anywhere" - i still think that FreePascal/Lazarus is a great choice for multi platform code, though personally i haven't exactly used Delphi in such a capacity to also make that claim. I do think that you make a good point, however, since not everyone cares about cross platform much and in regards to "native" .NET options on Windows, i'd say that everything from WinForms to stuff like WPF is indeed pleasant. That said, many developers out there also can't afford to (or just shouldn't) ignore cross platform development, so options in that regard are also definitely worth talking about!