Переносимость записи App.config dllmap

Запись файла конфигурации dllmap используется в Mono для сопоставления запросов на библиотеки DLL Windows с библиотеками Linux (.so). Но кажется, что если платформа Microsoft .NET пытается проанализировать файл конфигурации с такой записью, возникает ошибка, потому что она не понимает «dllmap». Я думаю, что все остальное в моем дистрибутиве можно без изменений распространять как на Linux, так и на Windows XP. Из всей переносимости, связанной с этим, действительно ли эта запись конфигурации является падением - единственной непереносимой частью? Нет ли способа поделиться этим файлом на разных платформах?


person BlueMonkMN    schedule 08.06.2009    source источник


Ответы (2)


Вы уверены, что вам нужны записи "dllmap"? Разве вы не можете просто положиться на автоматическое сопоставление «somelibrary» с «somelibrary.dll» в Windows и «somelibrary.so» в Linux?

Кроме того, я думаю, что фреймворк просто пропускает записи, которых он не ожидает...

РЕДАКТИРОВАТЬ: стандартный способ доставки библиотек Linux — иметь символическую ссылку без версии, указывающую на последнюю версию. Таким образом, вы должны добавить libfmodex.so, указывающий на libfmodex-4.22.01.so. Затем используйте [DllImport("fmodex")], и фреймворк автоматически рассчитает все остальное.

person skolima    schedule 12.06.2009
comment
1) Имя библиотеки Windows — fmodex.dll. Имя библиотеки Linux — libfmodex-4.22.01.so. Я бы предпочел не переименовывать их, и я сомневаюсь, что автоматическое сопоставление это поймет. 2) Я думал, что .NET будет пропускать записи, которые он тоже не понимает, пока я не столкнусь с ошибкой времени выполнения - очевидно, он никогда не пытался прочитать файл конфигурации, пока не произошла ошибка, а затем, когда он попытался прочитать конфигурацию, чтобы увидеть, как чтобы отреагировать, у него была другая ошибка при обработке файла. - person BlueMonkMN; 13.06.2009
comment
Я мог бы проверить сам, но я не загрузился в Linux на данный момент: есть ли такая вещь, как символическая ссылка внутри файла .tar.gz, чтобы при извлечении архива вы получали файл и символическую ссылку, указывающую на него? - person BlueMonkMN; 20.06.2009
comment
Да, это стандартное поведение tar. - person skolima; 22.06.2009

Поместите код импорта dll в отдельную dll-сборку. Затем добавьте yourinterop.dll.config с записями dllmap. Он будет проигнорирован MS и обработан моно. См. мой повторяющийся вопрос.

person Rbjz    schedule 29.04.2016