Запись файла конфигурации dllmap используется в Mono для сопоставления запросов на библиотеки DLL Windows с библиотеками Linux (.so). Но кажется, что если платформа Microsoft .NET пытается проанализировать файл конфигурации с такой записью, возникает ошибка, потому что она не понимает «dllmap». Я думаю, что все остальное в моем дистрибутиве можно без изменений распространять как на Linux, так и на Windows XP. Из всей переносимости, связанной с этим, действительно ли эта запись конфигурации является падением - единственной непереносимой частью? Нет ли способа поделиться этим файлом на разных платформах?
Переносимость записи App.config dllmap
Ответы (2)
Вы уверены, что вам нужны записи "dllmap"? Разве вы не можете просто положиться на автоматическое сопоставление «somelibrary» с «somelibrary.dll» в Windows и «somelibrary.so» в Linux?
Кроме того, я думаю, что фреймворк просто пропускает записи, которых он не ожидает...
РЕДАКТИРОВАТЬ: стандартный способ доставки библиотек Linux — иметь символическую ссылку без версии, указывающую на последнюю версию. Таким образом, вы должны добавить libfmodex.so
, указывающий на libfmodex-4.22.01.so
. Затем используйте [DllImport("fmodex")]
, и фреймворк автоматически рассчитает все остальное.
Поместите код импорта dll в отдельную dll-сборку. Затем добавьте yourinterop.dll.config с записями dllmap. Он будет проигнорирован MS и обработан моно. См. мой повторяющийся вопрос.