Взаимозаменяемость Mono и .NET dll

Можно ли полностью ссылаться на монобиблиотеки из MS.NET?

А как насчет обратного?

Если «вроде», то какие и каковы ограничения?


person Alwyn    schedule 11.09.2012    source источник
comment
Одна dll, скомпилированная моно-компилятором, а другая - компилятором MS? Это было бы рискованно.   -  person Lukasz Madon    schedule 12.09.2012
comment
@knocte на основе чего? этот моно не имеет всех функций, которые есть в .Net? MS не выпускала никаких тестов на совместимость (как Sun для jvm), поэтому поведение может быть другим и т. Д.   -  person Lukasz Madon    schedule 12.09.2012
comment
первый вопрос в Mono FAQ: mono-project.com/FAQ:_General   -  person knocte    schedule 12.09.2012


Ответы (2)


Да, компилятор Mono генерирует двоичные файлы, совместимые с .NET framework и наоборот.

Единственное ограничение AFAIK - это управляемый C ++:

  1. Компилятор Mono не имеет компилятора для этого.
  2. Компилятор MS.NET для этого языка создает сборки в смешанном режиме, которые невозможно запустить в Mono.

(Подробнее об управляемом C ++ см. В этом другом вопросе о переполнении стека. )

person knocte    schedule 11.09.2012

Формат файла идентичен (для полностью управляемых библиотек см. Ответ от knocte), поэтому теоретически библиотеки Mono полностью доступны для ссылок из .NET (и наоборот).

На практике это зависит от содержимого библиотек. Если вы пишете код только для Linux в библиотеке, он, конечно, не будет работать в .NET. Это также единственная потенциальная проблема: если вы пишете независимый от платформы код, вы можете использовать либо компилятор Mono mcs, либо компилятор Microsoft csc и без проблем использовать полученную библиотеку на любой платформе.

person Rolf Bjarne Kvinge    schedule 11.09.2012
comment
OP говорит о ссылках на сборки, а не о выполнении;) - person knocte; 12.09.2012