Mono development using Mono IDE or VS.Net and then migrate
We're planning to develop a simple multi forms based desktop app in Mono.
Initially, this app will have some forms (to add / edit data) and grids (to view, sort and perform basic operations). And some other things like validation, calendar, etc.. Backed up by some moderate standalone database like SQLite, etc.. (or even a simple xml file)
We've been looking into the Mono based development but we need to decide whether to -
Develop the app in VS.Net C# win forms and then migrate it (compile) using Mono. OR
Develop using Mono IDE like MonoDevelop, Monocross, etc..
Apparently, its not right to compare these IDEs with VS.Net and the learning curve might also affect. We tried MonoDevelop and found it very basic. So, please let us know which mode of development is suitable for small to moderate complexity win forms for Win & Mac.
PS: Could this be a better future solution?
Answers (1)
First thing is the choice of the GUI Toolkit:
- Choosing WindowsForms is a really bad choice because it is not actively maintained anymore in Mono. This means:
- For the most part your app will work in non-Windows operating systems, but if you find a bug, you will have to fix the bug in Mono yourselves (unless you pay a Mono consulting company like Sinenomine or some freelancer).
- The UI will look native only in Windows. In Mac your app will look very similar to how it looks in Windows (therefore it will look "foreign" in Macintosh, compared to other Mac applications).
Therefore I recommend you to use the XWT toolkit (or Xamarin.Forms/MAUI, which also works in desktop, but is a mobile-first toolkit) instead of System.Windows.Forms.
Now, in terms of development environment:
- MonoDevelop is nowadays very similar in features and capabilities to Visual Studio (it even has a contextual way to run NUnit tests like Resharper has). By the way, MonoDevelop in macOS is called "Visual Studio for Mac" these days.
- This means that you can have some developers use Mac, and others use VS.NET in Windows.
- But please, always make sure that some of the developers of your team (not just one) is using Mac to develop and testing your application regularly in that platform. That is the only way to make sure that you catch early enough any potential differences that may happen between Mono and .NET, and between Cocoa and WPF (which are the backends that XWT will use for Mac and Windows, respectively). If you find any difference, report it as a bug in http://bugzilla.xamarin.com (if it's a bug in Mono compared to MS.NET), or in github (if it's a difference in behaviour that XWT has in Macintosh compared to Windows).