Возможность разработки C # с Mono - PullRequest
12 голосов
/ 28 апреля 2009

Недавно я столкнулся с пакетами Mono и MonoDevelop в Ubuntu Linux. Они утверждают, что имеют .NET время выполнения в соответствии с CLI. Прежде чем устанавливать пакеты самостоятельно, я бы хотел знать следующее:

  1. Насколько мощный моно?

  2. Могу ли я разработать приложение с графическим интерфейсом для Linux, как разработка WinForm приложения для Windows.

  3. Совместима ли MonoDevelop IDE с Visual Studio IDE. Могу ли я импортировать решения VS 2008 в MonoDevelop и работать?

  4. Поддерживает ли он .NET 2.0 и выше?

РЕДАКТИРОВАТЬ: Добавление еще одного сомнения

Есть ли способ запустить .NET exe (из приложения winform) в Linux без сборки кода в Linux? На самом деле у меня нет кода для некоторых небольших утилит, которые я разработал ранее, и я хотел бы запустить их в Linux.

Ответы [ 7 ]

6 голосов
/ 28 апреля 2009
  1. (Странно, уценка начинает перечисление с единицы, хотя я начал с 2 ...)

  2. Да, вы можете, но вы ограничены сторонними компонентами, потому что внутренняя реализация отличается, и в прошлый раз, когда я проверял (не так давно), реализация Mono WinForms заставила мое тестовое приложение выглядеть довольно странно (представление списка, нарисованное владельцем). На самом деле это не рекомендуется, хотя Mono утверждает, что теперь она полностью совместима с WinForms-2.0.

  3. MonoDevelop - это / была ветка SharpDevelop, последняя имеет поддержку решения. Я не знаю, есть ли у MonoDevelop. Но круто то, что вы можете просто разрабатывать с Visual Studio и запускать свои скомпилированные приложения на Mono. Кстати, Mono также доступен для Windows.

  4. Да, это так, насколько CLR идет. Как уже писал Марк Гравелл, библиотеки Windows Foundation отсутствуют, как и некоторые другие (например, System.Management). Но в основном все должно работать, в том числе ASP.NET 2.0. Руководство по переносимости приложений Mono хорошо читается в этом.

2 голосов
/ 28 апреля 2009
  1. Определить "мощный".
  2. Mono имеет реализацию WinForms для обеспечения некоторого уровня совместимости с исходным кодом. Однако, в зависимости от ваших потребностей, вы можете использовать одну из привязок Mono для собственной среды Linux, например Gtk # или Qyoto
  3. Не знал бы.
  4. Зависит от того, какие части .NET вы имеете в виду. Язык C # кажется довольно актуальным, и чем ближе к корпоративным функциям, как уже упоминалось, все становится более размытым.

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

2 голосов
/ 28 апреля 2009

1: довольно хорошо, на самом деле. Существует не вся полная инфраструктура, поэтому, если вы пишете код, который должен работать как на MS .NET, так и на моно, вам нужно заранее собрать и протестировать обе платформы

4: да - хотя такие вещи, как WPF / WCF / WF (3.0) отсутствуют или сокращены

Я мало что знаю о среде development , поскольку я использую VSTS (в Windows) и просто использую скрипт NANT для сборки на моно ...

1 голос
/ 07 мая 2009
  1. Моно очень сильный. Он имеет все .Net мышцы на очень сильный скелет с открытым исходным кодом.

  2. Когда вы говорите «разрабатывать приложение с графическим интерфейсом для linux, например, разработку приложений WinForm для Windows», я понимаю, что вы спрашиваете о визуальном конструкторе, который позволит вам быстро создать пользовательский интерфейс. Да, это возможно. MonoDevelop имеет Stetic - встроенный визуальный дизайнер для Gtk #. Существует также QyotoDevelop , который включает поддержку QT в MonoDevelop.

  3. Да, MonoDevelop изначально поддерживает формат файла проекта / решения VS. Вы можете использовать ту же базу кода для компиляции своего приложения с VS в .Net для Windows и выиграть MD в Mono в Linux.

  4. В настоящее время Mono поддерживает C # 3.0 с некоторыми дополнениями, которые уже реализованы, и в процессе разработки.

  5. Да, во многих случаях возможно запускать скомпилированное приложение .Net в Mono, однако с поддержкой MonoDevelop для решений VS это не имеет большого значения. Требуется столько же, сколько нажать F7, чтобы перестроить весь проект, поэтому усилия действительно незначительны. Лучшим инструментом для проверки того, может ли ваше приложение работать в режиме моно, является MoMA .

1 голос
/ 28 апреля 2009
  1. Очень мощный. В основной реализации нет серьезных ошибок. Это не научный проект. Недостатки в основном там, где можно было бы ожидать, в новейших API-интерфейсах (по сути, у Microsoft есть преимущество первопроходца).

  2. Да. Мы только что закончили проект, в котором большая часть кода GUI была разработана в WinForms для Windows. Я мог работать над ним, используя Ubuntu без серьезных головных болей. Тем не менее, это одна из самых сложных частей API, и есть еще проблемы. Подробнее см. http://mono -project.com / WinForms .

  3. Не знаю, так как я им не пользуюсь.
  4. Да, хотя, опять же, могут быть некоторые недостающие API во время выполнения.

Обратите внимание, я использую Ubuntu Hardy (8.04).

0 голосов
/ 29 апреля 2009

Я использую WinForms в моно. 2.х релизы очень хорошие.

Я разрабатываю формы в visual-studio на windows и запускаю их в Linux с нулевым изменением кода. Да, формы выглядят немного иначе, чем в XP, но опять же, графический интерфейс на тему XP выглядел бы странно в GNOME.

Если вы только начинаете, придерживайтесь WinForms, пока вы освоитесь с Mono / Linux. Однако в какой-то момент вы можете захотеть исследовать GTK.

0 голосов
/ 28 апреля 2009
  1. Mono очень мощный, иногда даже более мощный, чем реализация Microsoft. текст ссылки
  2. Да, вы можете. Поддерживается Winforms 2.0
  3. Я верю в это.
  4. Да, это так. C # 3 поддерживается и просто посмотрите на winforms и реализацию asp.net, чтобы увидеть, сколько поддерживается каждым из проектов. Посмотрите на http://mono -project.com
...