Использование Mono для переноса приложения С#.NET на OS X?

Хорошо, ребята, я пишу приложение, которое хочу быть кросс-платформенным. До недавнего времени я пытался это сделать в Silverlight с С#, потому что он также работает на OS X, но со мной довольно ржавый с С#, а также не знаком с Silverlight. Я столкнулся с головной болью после головной боли. В большинстве случаев это связано с ограничениями, которые прилагаются к приложению, предназначенному для запуска в браузере, при этом проблемы с ним выполняются по-разному при работе с моей версией sever vs прямо из файла://и т.д.

Я предпочел бы полностью отказаться от всей идеи поддержки OS X, чем полностью переписать приложение для OS X, тем более, что у меня совершенно нет опыта написания для него. То, что я надеюсь сделать, это написать обычное приложение на С#.NET с Visual Studio для Windows, а затем легко перенести его в OS X с помощью Mono.

Насколько сложно принести приложение .NET к ОС X с помощью Mono? Мое приложение довольно простое, нет ничего экзотического в том, что касается форм или чего-то еще, поэтому мне пришлось бы предположим, что он будет поддерживаться в реализации Mono WinForms.

Есть ли хорошие ресурсы в том, как переносить приложение с помощью Mono? Или, может быть, я пропущу всю точку, и она просто позволяет запускать приложения .NET на OS X, и мне не нужно беспокоиться о портировании?

Простите мое полное незнание по этому вопросу, я только начал рассматривать этот маршрут, как 10 минут назад, после того, как столкнулся с еще одним раздражающим ограничением в Silverlight.

Я буду первым, кто признает, что я не знаю своей головы из моей задницы по этому вопросу, поэтому будьте осторожны..:)

Ответы

Ответ 1

Appart от MoMa, как упоминалось в других ответах, которые могут вас заинтересовать MonoMac. С успехом MonoTouch (написание С# для iPhone) теперь есть проект под названием MonoMac для создания собственного интерфейса для OSX при использовании .net/mono в фоновом режиме. Может быть интересно для вас http://www.mono-project.com/MonoMac, статья о блоге Мигеля де Икаса: http://tirania.org/blog/archive/2010/Apr-19.html

Ответ 2

В дополнение к тому, что уже было сказано, учитывая, что Mono поддерживает подмножество полной функциональности .NET, я, вероятно, предпочту бы разработать на Mono, а затем протестировать среду выполнения Microsoft, если цель состоит в том, чтобы работать на обоих этих, В противном случае вы рискуете непреднамеренно использовать некоторые функции, недоступные в Mono, и перед тем, как вы начнете кросс-платформенную сборку и тестирование, вам придется бросить большой кусок кода в окно.

Ответ 3

Есть несколько вещей, которые вы должны иметь в виду.

  • вам нужно будет перенести любое использование деривационного кода пользовательского интерфейса платформы
  • не использовать зависимые от ОС вызовы ОС (win32 api)
  • не использовать "экзотические" библиотеки (например, рабочий процесс, к сожалению, ef)
  • В общем: абстрактные зависимости от такого кода прочь, поэтому вы можете легко заменить их моно-специфическими библиотеками. (рекомендуемым шаблоном будет MVVM).

Существует инструмент под названием MoMA, который поможет вам в этом. Однако, возьмите результаты с солью. В любом случае просто попробуйте.

Ответ 4

Монопроект имеет страницу, посвященную тому, как переносить приложения,

http://mono-project.com/Guidelines:Application_Portability

Однако этого никогда не бывает достаточно, так как ваше приложение может быть уникальным по-разному.

Попробуйте загрузить его и сообщить о проблемах ребятам Mono, когда это необходимо. Кроме того, если вы работаете в фирме, обратитесь в службу технической поддержки Mono,

http://mono-project.com/Support