.NET компилируется в IDL (байт-код) на всех платформах, включая платформу Windows.Затем он запускается на CLR (общеязыковой среде выполнения iirc), которая похожа на концепцию виртуальной машины Java.Просто так получилось, что на большинстве машин Windows этот CLR установлен по умолчанию.Поэтому, если вы хотите, чтобы ваше приложение работало на другой платформе, вам сначала нужен CLR для этой платформы.Mono включает CLR, который может работать на OSX.Таким образом, либо вам (как часть вашего пакета / комплекта), либо пользователю потребуется установить его до запуска .NET.
Другая проблема, с которой вы столкнулись, заключается в том, что .NET также содержит определенные API, которые не являются частью стандарта ECMA, который ваше приложение может или не может использовать.Некоторые из этих API присутствуют в моно, а некоторые нет.Те, которые обычно не имеют эквивалентного или аналогичного API, который вы можете использовать для достижения того же результата, однако вам может потребоваться изменить приложение, чтобы справиться с этим сценарием.
Это действительно зависит от того, какие приложения .NET api используются вашим приложением, и от того, насколько сложно будет их портировать.Я предполагаю, что вы, вероятно, используете winforms как часть вашего приложения, поэтому вот руководство с моно сайта для этой части API
http://www.mono -project.com / Guide: _Porting_Winforms_Applications