В настоящее время я разрабатывал настольное приложение на C# с использованием моно и тестировал в SuSE и Windows. Концепция не имеет большого значения, но это программа «веб-линт», которая сканирует веб-сайт и возвращает возможные проблемы с безопасностью и / или кроссбраузерной совместимостью. Однако я хочу иметь возможность предлагать двоичные файлы для нескольких платформ. Должен ли я остаться с Mono, или есть другая платформа, которая дала бы мне большую доступность платформ, таких как Mac, Windows, Linux и другие (возможно, мобильные платформы), и упростила бы перенос?





Java будет работать в Windows, Linux и Mac. Переход с C# должен быть простым - используйте Apache HTTPClient для захвата сканируемого веб-контента, и код сканирования должен быть более или менее таким же. Однако обратная сторона заключается в том, что у пользователя должна быть установлена среда выполнения Java.
Другой вариант - Python - вы можете создавать автономные исполняемые файлы для Windows, и он по умолчанию входит в состав большинства дистрибутивов Linux, а также Mac OS X (необходима ссылка;)). Это намного меньше хлопот для пользователей Windows (язык компилируется в исполняемый файл, другие загрузки не требуются).
Если моно работает в Mac OS X, то, конечно же, это хорошая платформа?
Что ж, лучше всегда использовать язык, который действительно существует на всех платформах. Я думаю, это обычно означает Java, хотя даже у Perl есть разновидности для мобильных платформ (в зависимости от рассматриваемой мобильной платформы).
Я выполняю большую часть своей кроссплатформенной работы на C и perl, но есть некоторые головные боли с C (много # ifdef), и perl может не быть на мобильной платформе, которая вам небезразлична (пока). Вам нужно будет оценить языки / компиляторы / интерпретаторы, общие для всех платформ, на которые вы хотите настроить таргетинг, а затем выбрать из этого списка. Не зная полного списка таких платформ, нам будет трудно сказать вам, что использовать, хотя у Java достаточно громкого слова, чтобы, вероятно, быть сильным кандидатом.
Это действительно зависит от того, чем вы хотите заниматься. Если для веб-разработки достаточно HTML / JavaScript, придерживайтесь его. Если вам нужны более сложные вещи, я бы использовал ASP.NET с Mono (что вы, вероятно, сделали), поскольку вы это уже знаете. (Здесь вы можете использовать Visual Studio.)
Другим вариантом может быть (поскольку вы разработчик C#) использование Silverlight. Это дает вам покрытие для платформ Windows и Mac, и, надеюсь, Свет луны будет охватывать платформу Linxu позже. (Здесь вы можете использовать Visual Studio и Expression Blend.)
Если вам нужно настольное приложение, то, вероятно, проще всего использовать Java, поскольку вы уже знаете C#. Но если вы знаете C / C++, попробуйте, например, взглянуть на wxWidgets.
C# и Mono, вероятно, достаточно кроссплатформенны для большинства настольных сред. Уловка будет заключаться в требовании «мобильной платформы».
Мобильные операционные системы очень разнообразны, и вы не можете сделать много обобщений. У некоторых есть Java, например Blackberry. C# может помочь вам перейти на платформы на базе Windows Mobile. Айфоны делают свое дело. Вам в значительной степени нужно выбрать платформу и нацеливаться на нее. Это может повлиять на выбор вашей настольной платформы.
Если вы знаете C++, Qt будет охватывать многие платформы.
Просто придерживайтесь Mono, убедитесь, что у вас есть инспектор кода Gendarme (FxCop для Mono), проверяющий ваш код на наличие проблем с переносимостью, и все будет в порядке.
Зачем ограничиваться традиционным C# / Java? Взгляните на Adobe AIR и Microsoft SilverLight