Использование моносборок из .NET CoreCLR

Мне нужно использовать библиотеку, которая еще не поддерживает CoreCLR (точнее, RabbitMQ.Client). Можно ли использовать моно-порт этой библиотеки в системе Linux из исполняемого файла CoreCLR? Если да, то как это достигается?


person jdmcnair    schedule 04.11.2015    source источник


Ответы (1)


Это невозможно на двоичном уровне (если не используется правильный профиль PCL). В .NET Core используется другой подход к организации классов в сборках, поэтому некоторые сборки в .NET Framework для настольных компьютеров разбиваются на более мелкие сборки, а типы перемещаются. Сборка для настольных компьютеров (из .NET или Mono) не будет работать в .NET Core из-за таких изменений.

Но это, очевидно, возможно на уровне исходного кода, так как была попытка портировать WinForms от Mono на .NET Core,

http://forums.dotnetfoundation.org/t/anyone-porting-winforms-mono-to-net-core/898/4

После создания нового проекта библиотеки .NET Core исходные файлы должны иметь возможность переноса (с некоторыми изменениями или даже без них).

Однако .NET Core развивается слишком быстро, и эта попытка может уже устареть. Любой, кто хотел бы исследовать эту область, может последовать этому примеру и попробовать еще раз. Удачи.

person Lex Li    schedule 04.11.2015
comment
Спасибо... эта информация может пригодиться, если я начну портировать библиотеку с Mono на CoreCLR. Но мой вопрос на самом деле о том, могу ли я просто использовать существующую сборку Mono как есть в CoreCLR, или если перенос кода в проект CoreCLR и перестройка абсолютно необходимы. - person jdmcnair; 05.11.2015
comment
Это практически невозможно, так как в .NET Core другая иерархия сборки, поэтому ссылки меняются, типы перемещаются. Некоторые PCL могут работать, но классические библиотеки классов — нет. - person Lex Li; 05.11.2015
comment
Хорошо, спасибо. Пожалуйста, обновите свой ответ, чтобы отразить то, что мы обсуждали в этих комментариях, и я приму его. - person jdmcnair; 05.11.2015