L'entreprise pour laquelle je travaille utilise Mono sur Linux comme principal environnement de déploiement. Il n'y a donc pas de travail "supplémentaire" - nous fournissons l'ensemble de la pile, du matériel aux applications, en passant par le système d'exploitation (personnalisé et rogné). L'utilisation de l'Open Source permet de réaliser d'énormes économies pour nous et nos clients (et oui, nous contribuons aux projets de systèmes d'exploitation dont nous dépendons).
L'important est de tester constamment en utilisant votre cible réelle (désolé, Mono sur Windows ne compte pas). Bien sûr, les développeurs utilisent Visual Studio, mais l'intégration continue (à l'aide de CruiseControl.Net (vous aurez besoin de Mono 2.4.2 pour l'exécuter sous Linux) est réalisé à la fois sous Windows et sous Linux, testant toutes les versions de Mono sur lesquelles nous nous attendons à travailler (il est devenu beaucoup plus stable récemment, mais des régressions se produisent quand même entre les versions). Il est assez facile d'exécuter versions parallèles Mono sur un système *nix, vous pouvez même inclure une construction svn snapshot si vous préférez attraper les régressions en amont plus tôt. Si vous ne déployez pas votre propre distribution, rappelez-vous que la plupart des fournisseurs de Linux livrent Mono avec des correctifs personnalisés - cela nous a déjà causé des problèmes. De plus, de nombreuses distributions ont beaucoup de retard dans la mise à jour de Mono, et c'est un projet qui progresse rapidement.
Pour la couche base de données, nous utilisons principalement ADO.NET "ordinaire" - Oracle (avec dotConnect pour Oracle (ils supportent Mono) et SQLite (Mono est livré avec un connecteur fonctionnel). J'ai également utilisé la version officielle de Pilote ADO.NET pour MySQL (Connecteur/NET) et lui aussi fonctionne bien. Les mappages ORM sont plus délicats, mais NHibernate est utilisable (gardez à l'esprit qu'ils ne pas supportent officiellement Mono).
Quant au moteur de construction et aux tests - NAnt et NUnit sont bien connus et bien testés. Avec les versions les plus récentes de Mono, xbuild (clone de MSBuild) est devenu utilisable, mais préparez-vous à contribuer à de nombreux correctifs si vous décidez de l'utiliser pour des scénarios plus complexes.
Écrivez des tests. Beaucoup de tests. Soyez prêt à contribuer aux correctifs et aux rapports de bogues, et si vous utilisez des composants commerciaux, assurez-vous que le fournisseur supporte officiellement Mono.