моно эмулирует .NET, или это просто инфраструктура, совместимая с языками .NET - PullRequest
3 голосов
/ 21 апреля 2010

Например, если я напишу программу для Windows с использованием C # и .NET Framework, а затем урону код на машине Linux с моно, будет ли она работать точно так же? Или мне придется переписать его для работы с библиотеками Моно?

Ответы [ 3 ]

5 голосов
/ 21 апреля 2010

будет ли он работать точно так же? Или мне придется переписать его для работы с библиотеками Моно?

Это действительно зависит от того, что делает ваша программа и как она написана.

Если вы используете чистый C # и базовые функции .NET Framework, которые поддерживаются в Mono, они будут «просто работать» без изменений. Однако если вы используете неподдерживаемые функции (например, любые сторонние библиотеки, созданные на основе встроенного взаимодействия, или WPF и т. Д.), Они не будут работать.

Очень хорошая идея регулярно запускать Mono Migration Analyzer на ваших сборках по мере их разработки. Это расскажет вам о любых несовместимостях.

4 голосов
/ 21 апреля 2010

Краткий ответ: это зависит.

Более длинный ответ: Mono'c C # компилятор выдает IL, который совпадает с тем, что производит .NET.

Проблема в дополнениях; то есть используя что-то в .NET, для которого нет доступной библиотеки Mono (например, WPF).

Другая область несовместимости - это использование специфичных для Win32 API.

Итак, это лучший ответ.

2 голосов
/ 21 апреля 2010

Это кроссплатформенная реализация C #, которая совместима с .NET.

Итак, я бы сказал, что это первый из двух вариантов, которые вы перечислили.

http://www.mono -project.com / Main_Page

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