Also wird einem bzgl. CrossPlatform und .NET respektive Prism/Mono nur etwas vorgegaukelt? Als letztlich nichts anderes als die Behauptung von früher "C" wäre auch kompatibel, das ganze aber den Bach runtergeht wenn man mehr als printf() verwenden möchte?
So schlimm ist es jetzt nicht.
Mono unterstützt nunmal nicht alle Teile von .NET. Es fehlen noch Teile von WCF und WPF wird gar nicht unterstützt.
Das heisst im
GUI-Bereich ist man, wenn man eine 'one size fits all'-Lösung haben will auf Windows Forms beschränkt, und muss dort eben mit den jeweiligen System-Einschränkungen leben, und im Kommunikationsbereich auf normale HTTP-Webservices und Sockets.
Alles andere, insbesondere im Bereich Datenbanken und sonstiger System I/O (mit Ausnahme von Message Queues, wo man am besten RabbitMQ nimmt um wirklich alle Plattformen abzudecken), ist unproblematisch. Das schliesst unter anderem auch ASP.NET ein.
Will heissen: .NET /Mono ist eine Plattform, die genau wie Java eher für den Server / das Backend gedacht ist, und eben nicht so sehr für die
GUI.
GUI würde ich auf jeder Plattform nativ machen - mit den MonoMac Bindings kann man dann natürlich die nativen
OS-Controls von OSX absolut schmerzfrei einbinden und hat hinterher eine Anwendung der man nicht ansieht, dass sie hinten drin eigentlich Mono verwendet.
Das bedeutet aber natürlich, dass man auf der Zielplattform auch testen muss.