Ограничение Mono Runtime - PullRequest
       7

Ограничение Mono Runtime

5 голосов
/ 28 июня 2009

Мой вопрос похож на этот и этот , но есть небольшая разница. Вот почему я спрашиваю это здесь.

У меня блестящая служба Windows .Net 3.5 (с NHibernate, LINQ, лямбда-выражением) и т. Д., Работающая в Windows. Теперь я планирую перенести свое приложение на Linux, поэтому я думаю о Mono.

Могу ли я просто скомпилировать свое приложение .net в Windows, скопировать его на компьютер Linux с установленным .Net (моно версия) и ожидать, что оно будет работать нормально? Если нет, то что я должен сделать?

Любые ответы или указатели приветствуются.

Ответы [ 3 ]

8 голосов
/ 28 июня 2009

Будет ли это просто работать? У вас действительно есть , чтобы проверить это. Я только недавно приложил усилия к тому, чтобы протоколные буферы работали на Mono. До сих пор у меня было очень мало проблем во время исполнения; компилятор был больше проблемой для меня. Тем не менее, мне пришлось временно отключить один из модульных тестов (с использованием насмешек), потому что он заставляет виртуальную машину Mono 2.4 идти на ура. Я еще не выяснил, почему, но такого рода вещи предсказать невозможно.

Все, что использует "глубокие" аспекты CLR, такие как деревья выражений и динамические методы, может иметь больше проблем, чем простые библиотеки, IMO.

Теперь вы говорите, что это служба Windows - очевидно, Linux не имеет служб точно так же, как Windows, поэтому вам нужно будет решить, как вы хотите, чтобы она работала. Я бы начал с того, что запустил бы его как простое консольное приложение на вашем месте ... как только оно все заработает, вы можете подумать об интеграции его с другими "сервисными" контроллерами и т. Д. - если вам это нужно.

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

7 голосов
/ 28 июня 2009

Начните с использования инструмента MoMA

Mono Migration Analyzer (MoMA) инструмент поможет вам определить проблемы, которые вы можете есть при портировании вашего .Net приложение к моно. Это помогает точно определить специфичные для платформы вызовы (P / Invoke) и области, которые еще не поддерживаются Моно проект. Хотя МоМА может помочь показать потенциальные проблемы, есть много сложные факторы, которые не могут быть покрыты простым инструментом. МоМА может не указать области, которые приведут к проблемы, и могут указать на области что на самом деле не будет проблемой

С личной точки зрения: все функции C # 3.0 поддерживаются хорошо, у меня не было проблем с LINQ (для объектов, я не знаю о LINQ to SQL или to XML), а NHiberinate также работает хорошо (хотя я не закончил используя в)

2 голосов
/ 28 июня 2009

Время выполнения должно быть в порядке, но вы можете запустить Mono Migration Analyzer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...