2009-06-28 13 views
5

Meine Frage ist ähnlich wie this one und this one, aber es gibt einen kleinen Unterschied. Deshalb frage ich es hier.Die Begrenzung der Mono-Laufzeit

Ich habe eine glänzende .Net 3.5 Windows-Dienst (mit NHibernate, LINQ, Lambda-Ausdruck) usw. unter Windows ausgeführt. Jetzt plane ich, meine App auf Linux zu portieren, also denke ich an Mono.

Kann ich meine .net App einfach in Windows kompilieren und auf einen Linux-Rechner mit installierter .Net (Mono-Version) kopieren, und erwarte, dass sie reibungslos läuft? Wenn nicht, sollte ich irgendetwas tun?

Alle Antworten oder Hinweise sind willkommen.

+0

Ich denke, das ist eigentlich ein Duplikat der Frage, die Sie verknüpft, und andere wie http://StackOverflow.com/Questions/549166/How-Mature-is-mono und http: // stackoverflow.com/questions/204709/is-mono-robust-genug-für-ernsthafte-unternehmens-entwicklung –

+0

ich glaube nicht, diese frage ist spezifischer als die beiden, die sie erwähnt haben. – Graviton

+0

Es ist keine Täuschung, er fragt, wie man seine App portiert, nicht wenn Mono stabil genug ist, um es in der Produktion zu verwenden. – Treb

Antwort

7

zunächst den MoMA tool

Der Mono Migration Analyzer (MoMA) -Tool hilft Ihnen, Probleme identifizieren Sie haben können, wenn Ihre .Net Anwendung auf Mono zu portieren. Es hilft, plattformspezifische Aufrufe (P/Invoke) und Bereiche zu lokalisieren, die noch nicht von dem Mono-Projekt unterstützt werden. Während MoMA helfen kann, potenzielle Probleme zu zeigen, gibt es viele komplexe Faktoren, die durch ein einfaches Tool nicht abgedeckt werden können. MoMA kann Punkt aus Bereichen fehlschlagen, die Probleme verursachen wird, und Bereiche, kann darauf hinweisen die eigentlich kein Thema

Von Personal Punkt: Alle C# 3.0-Funktion unterstützt werden gut, ich hatte kein Problem mit LINQ (zu Objekten, weiß nicht über LINQ to SQL oder zu XML) und NHiberinate funktioniert auch gut (obwohl ich nicht am Ende verwendet)

8

Wird es einfach funktionieren? Sie haben wirklich haben, um es zu testen. Ich habe erst kürzlich Anstrengungen unternommen, Protokollpuffer an Mono zu arbeiten. Ich hatte bis jetzt nur sehr wenige Ausführungszeitprobleme; Der Compiler war eher ein Thema für mich. Allerdings musste ich einen der Komponententests (spöttisch) vorübergehend deaktivieren, da dies die Mono 2.4-VM selbst zum Knallen bringt. Ich habe noch nicht untersucht, warum, aber so etwas ist im Grunde unmöglich vorherzusagen.

Alles, was "tiefe" Aspekte der CLR verwendet - wie Ausdrucksbäume und dynamische Methoden - hat wahrscheinlich mehr Probleme als einfache Bibliotheken, IMO.

Jetzt sagen Sie, es ist ein Windows-Dienst - offensichtlich hat Linux keine Dienste auf ganz ähnliche Weise wie Windows, also müssen Sie herausfinden, wie Sie es ausführen möchten. Ich würde damit beginnen, es als eine einfache Konsolen-App zu betreiben, wenn ich Sie wäre ... sobald es alles funktioniert, können Sie darüber nachdenken, es mit anderen "Service" -Controllern usw. zu integrieren - wenn Sie finden, dass Sie müssen.

Früher sicherlich der Fall sein, dass xbuild nicht einen nahtlosen Migrationspfad von aufbauend auf Windows baut auf Linux aber vorsah ..., es vor kurzem viel Aufmerksamkeit gehabt hat, so wieder versuchen, es lohnt sich. ..

+0

Wow, also hast du tatsächlich die Tests in Mono durchgeführt? Haben Sie Ihren Code und Tests auch in Mono kompiliert? – Graviton

+1

Ja, jetzt baut alles in Mono - aber ich musste ein paar Probleme mit dem Compiler umgehen, und das "Build-System" ist nur ein Shell-Skript mit liberaler Verwendung von 'find. -name '* .cs'. Sie sollten * unbedingt * Ihre Komponententests unter Mono durchführen ... aber das ist natürlich nur der erste Schritt. Sie müssen die gesamte App auch manuell testen. –

+0

Interessanterweise habe ich eine ganze Reihe von Mono-Compiler-Bugs eingereicht, während ich Protobuf-Net gemacht habe ... offensichtlich gibt es immer noch einige Fehler. –

Verwandte Themen