Ist Mono wirklich plattformübergreifend?

8

Die offizielle Mono-Projektwebseite sagt, dass Mono unter Windows, Linux und Mac OS X erfolgreich arbeitet. Stimmt das?
Ich möchte Anwendungen erstellen, die zumindest unter Windows und Linux funktionieren. Ist es mit Mono möglich?

P.S. Ich weiß, dass ähnliche Themen bereits existieren (z. B. Cross-Plattform .Net? ), aber sie können veraltet sein.

    
Sergey 20.10.2009, 11:01
quelle

7 Antworten

9

Ja, das ist möglich.

Im Allgemeinen funktioniert es ganz gut, aber ich glaube nicht, dass es große / mittlere Anwendungen auf Mono gibt. Es gibt mehrere andere Apps , die Sie durchsuchen möchten.

Da Mono eine Teilmenge der realen Sache ist (.NET), müssen Sie, um die beste Kompatibilität zu erhalten, möglicherweise auf einer von Mono unterstützten Plattform (z. B. Linux) entwickeln, und sobald es dort funktioniert, können Sie ziemlich sicher sein Es wird auf .NET funktionieren. Ich sage das, weil, obwohl sehr kompatibel mit .NET, Mono ist nicht so viele Leute denken voll kompatibel mit dem gesamten .NET-Stack und hat andere Einschränkungen auch.

Ich habe es weiterentwickelt und bin auf einige davon gestoßen. Ich hoffe, dass Ihr Projekt nicht so viele .NET-Abhängigkeiten hat wie ich.

    
NT_ 20.10.2009, 11:10
quelle
3

Es ist sicher. Mono wird auf allen drei Plattformen funktionieren, aber wenn Sie "Erstellen einer Anwendung" sagen, müssen Sie beachten, dass nicht alle .net-Namespaces auf Mono portiert wurden. Sie haben sich sehr auf die Portierung der "Web-Bits" konzentriert, so dass Sie keine Probleme haben sollten, eine Webanwendung zu schreiben, die plattformübergreifend funktioniert. Wenn Sie jedoch eine Client-Anwendung schreiben möchten, müssen Sie dies überprüfen out the moonlight project, eine Silverlight-Implementierung für Linux.

    
lomaxx 20.10.2009 11:05
quelle
2

Ich habe noch nicht viel in Mono gemacht, aber es funktioniert wirklich gut. Ich würde vorschlagen, dass Sie unter Linux entwickeln. Dann können Sie sehr sicher sein, dass es auch unter Windows funktioniert (solange Sie keine dummen Dinge wie Hardcodingpfade usw. Tun).

    
Thorsten Dittmar 20.10.2009 11:05
quelle
1

Mono eignet sich sehr gut zum Erstellen von WinForms-Anwendungen, die unter Windows und Linux funktionieren. Sie können auch GTK verwenden, wenn Sie bevorzugen (im Großen und Ganzen finde ich WinForm UI Aussehen unter Windows etwas besser aussehen, GTK-Schnittstellen sehen unter Linux etwas besser aus, obwohl abhängig von Ihrer App kann es wenig Unterschied zu unterscheiden).

Die Implementierung von Web Services ist ebenfalls hervorragend (besser als die von Microsoft in IIS) und funktioniert plattformübergreifend unter Windows, Linux und Mac OS.

Wenn dies jedoch der Weg ist, den du gehen willst, musst du dein Projekt mit Mono erstellen. .NET-Projekte, die in Visual Studio erstellt wurden, werden wahrscheinlich nicht unter Mono ohne (möglicherweise signifikante) Änderungen ausgeführt, da nicht alle .NET-Bibliotheken implementiert sind. Mono-Code funktioniert jedoch problemlos in Visual Studio (vorausgesetzt, sie rufen keine monospezifischen Bibliotheken auf). aber es ist klar, wenn Sie das tun, wie sie im Mono. * Namensraum sind.).

Mono-Befehlszeilenprogramme funktionieren auch unter Mac OS einwandfrei, aber die WinForms-Implementierung unter Mac OS ist begrenzt. Wenn Mac OS in Betracht kommt, sollten Sie eine native GUI in XCode erstellen und sie mit einem C # -Backend verbinden (im Gegensatz zu Windows und Linux) Die WinForms-Implementierung von Mono unter Mac OS ist keine Produktionsqualität.

Ich empfehle Ihnen dringend, Delphi Prism zu besuchen, wenn Sie daran interessiert sind, eine plattformübergreifende (Win / Linux / Mac OS) Anwendungen in Visual Studio. Es gibt andere Optionen (MonoDevelop IDE, Eclipse, TextMate), aber es ist leicht zu verstehen, aber nicht frei.

Hinweis: Im Gegensatz zu dem, was der Name möglicherweise andeutet, ermöglicht Delphi Prism , Mono-Apps in C # zu schreiben, nicht nur mit Delphi. Es vereinfacht auch die Installation von Mono-Apps auf Mac OS GUI, aber die Portierung auf Mac OS erfordert noch ein wenig zusätzlichen Aufwand (aber nicht annähernd so viel wie die Portierung auf ObjC!).

Schließlich ist dies nicht das, was Sie gefragt haben, aber es könnte Sie interessieren: Sie könnten auch in Betracht ziehen, etwas wie REALBasic um die GUI zu erstellen und gebündelte Apps in Mono im Hintergrund aufzurufen (abhängig von der Art der App, an der Sie gerade arbeiten, und wenn Sie Basic nicht in RB verwenden können).

    
Iain Collins 20.10.2009 11:45
quelle
1

Es ist plattformübergreifend, machen Sie nicht den Fehler, unter Windows zu entwickeln und .NET-Bibliotheken zu verwenden, die nicht in Mono implementiert sind. Zum Beispiel unterstützt Mono WebParts nicht, obwohl .NET dies tut.

    
Gergely Orosz 20.10.2009 11:11
quelle
0

Ja.

Natürlich kommt es darauf an, was Sie entwickeln und wie Sie es entwickeln und testen. Es mag offensichtlich klingen, aber jede Multi-Plattform-App muss auf jeder Plattform getestet werden, die Sie unterstützen müssen.

FWIW Ich habe ein NAnt-basiertes Subversion-Admin-Tool erstellt, das unter Linux und Windows mit Mono oder Microsoft.NET austauschbar läuft. Obwohl ich es hauptsächlich unter Windows verwende, funktioniert es genauso gut unter Linux.

Sie müssen auch den feineren Details mehr Aufmerksamkeit schenken, wie immer mit Environment.NewLine und Path.Combine , aber das ist eine gute Sache!

    
si618 20.10.2009 11:21
quelle
0

irgendwie, aber nicht so sehr. Bitte beachten Sie, dass gemäß der Mono-Projekt-Website "andere" Linux-Plattformen "nicht unterstützt" werden.

Ссылка

JavaScript und HTML5 sind plattformübergreifender als alles andere. Ja, Sie können JavaScript verwenden, um Spiele (Unity3D) und Webserver-Apps (Node.js) und mobile Apps (Appcelerator, et al) zu entwickeln.

Mein bester Rat ist, hör auf nach einer Silberkugel zu suchen. Zu der Zeit, wenn Sie es finden, wird es etwas anderes sein.

    
Michael Mügge 13.04.2013 19:18
quelle

Tags und Links