Die Firma Ich arbeite für Ziele Mono unter Linux als unsere Haupteinsatzumgebung. Somit gibt es keine "zusätzliche" Arbeit - wir stellen den gesamten Stack zur Verfügung, von der Hardware über das Betriebssystem (angepasst und getrimmt) bis hin zu Anwendungen. Die Verwendung von Open Source bietet enorme Einsparungen für uns und unsere Kunden (und ja, wir tragen zu den OS-Projekten bei, auf die wir angewiesen sind).
Wichtig ist, ständig mit dem tatsächlichen Ziel zu testen (Entschuldigung, Mono unter Windows zählt nicht). Sicher, Entwickler verwenden Visual Studio, aber die kontinuierliche Integration (unter Verwendung von CruiseControl.Net, benötigen Sie Mono 2.4.2, um es unter Linux auszuführen) ist sowohl unter Windows als auch unter Linux möglich und testet alle Mono-Versionen, von denen wir erwarten, dass sie funktionieren in letzter Zeit stabiler, aber immer noch, Regressionen passieren zwischen den Releases). Es ist ziemlich einfach parallel Mono versions auf einem * nix System laufen zu lassen, du kannst sogar einen SVN Snapshot Build einbauen, wenn du es vorziehst Upstream Regressionen früh zu fangen. Wenn Sie keine eigene Distribution bereitstellen, denken Sie daran, dass die meisten Linux-Hersteller Mono mit benutzerdefinierten Patches ausliefern - das hat uns schon früher Probleme bereitet. Außerdem haben viele Distributionen viel Zeit, um Mono zu aktualisieren, und dies ist ein sich schnell entwickelndes Projekt.
Für Datenbank-Ebene verwenden wir meist "plain" ADO.NET - Oracle (mit dotConnect for Oracle, sie unterstützen Mono) und SQLite (Mono Schiffe mit einem funktionierenden Connector). Ich habe auch die offizielle ADO.NET Driver for MySQL (Connector/NET) verwendet und es funktioniert auch gut. ORM-Mappings sind trickreicher, aber NHibernate ist verwendbar (bedenken Sie, dass sie nicht Mono offiziell unterstützen).
Wie für die Build Engine und Tests - NAnt und NUnit sind gut bekannt und gut getestet. Mit den neuesten Versionen von Mono xbuild (Klon von MSBuild) wurde tatsächlich nutzbar, aber bereiten Sie sich darauf vor, eine ganze Menge Patches beizusteuern, wenn Sie sich entscheiden, es für komplexere Szenarien zu verwenden.
Schreiben Sie Tests. Viele von ihnen. Bereiten Sie Patches und Fehlerberichte vor. Wenn Sie kommerzielle Komponenten verwenden, stellen Sie sicher, dass der Lieferant Mono offiziell unterstützt.
Klingt wie diese Frage sollte ein Community-Wiki sein. Es wird keine richtige Antwort geben. – mkchandler
Einverstanden, es gibt möglicherweise keine einzige richtige Antwort, aber da die Bereitstellung unter Linux erfordert, dass wir mehr Komponenten in einer nicht-nativen Umgebung zusammenstellen, ist es sinnvoll, von den Entwicklern zu hören, die es tatsächlich getan haben oder gerade dabei sind. – keithm
Ich war versucht zu sagen "Überraschung! Es wird nicht funktionieren!" aber ich habe nur meine eigenen Probleme bei der Umsetzung eines größeren Projekts. Mono ist wirklich spektakulär. Nur gedacht, das würde ein paar Kichern denen geben, die immer noch versuchen, die kryptischen Fehler zu verstehen, die Mono manchmal ertragen kann :) – Chazt3n