Ответ 1
Компания, с которой я работаю для задач Mono в Linux, является нашей основной средой развертывания. Таким образом, нет "дополнительной" работы - мы предоставляем весь стек, от аппаратного обеспечения, через операционную систему (настраиваемую и обрезанную) для приложений. Использование Open Source дает огромную экономию для нас и наших клиентов (и да, мы вносим свой вклад в проекты ОС, на которые мы полагаемся).
Важно постоянно проверять свою реальную цель (извините, Mono on Windows не учитывается). Конечно, разработчики используют Visual Studio, но непрерывная интеграция (используя CruiseControl.Net, вам понадобится Mono 2.4.2 для запуска в Linux) выполняется как в Windows, так и в Linux, тестируя все версии Mono, над которыми мы планируем работать (в последнее время он стал намного более стабильным, но все же регрессии происходят между релизами). Легко запускать параллельные версии Mono в одной системе * nix, вы можете даже включить сборку снимков svn, если вы предпочитаете рано ловить восходящие регрессии. Если вы не раскрываете свой собственный дистрибутив, помните, что большинство поставщиков Linux поставляют Mono с пользовательскими патчами - это уже вызвало проблемы у нас. Кроме того, во многих дистрибутивах есть много обновлений с задержкой Mono, и это быстро развивающийся проект.
Для слоя базы данных мы используем в основном "простой" ADO.NET - Oracle (с dotConnect для Oracle, они поддерживают Mono) и SQLite (Mono корабли с рабочим коннектором). Я также использовал официальный ADO.NET Driver for MySQL (Connector/NET), и он тоже хорошо работает. ORM-сопоставления более сложны, но NHibernate можно использовать (имейте в виду, что они официально не поддерживают Mono).
Что касается механизма сборки и тестов - NAnt и NUnit хорошо известны и хорошо протестированы. С самыми последними версиями Mono xbuild (клон MSBuild) на самом деле можно использовать, но приготовьтесь к тому, чтобы внести довольно много исправлений, если вы решите использовать его для более сложных сценариев.
Напишите тесты. Многие из них. Будьте готовы внести исправления и исправления, а если вы используете коммерческие компоненты - убедитесь, что поставщик официально поддерживает Mono.