Не удалось запустить приложение .net с Mono - mscorlib.dll не найдено (несоответствие версии?)

У меня есть простой инструмент командной строки .net, написанный и скомпилированный под Windows, используя .net 3.5SP1. Я хотел бы запустить его в Linux с помощью Mono.

Я использую Ubuntu 12.04 и устанавливаю Mono Runtime с помощью программного центра Ubuntu. Если я попытаюсь запустить приложение в терминале, сделав:

mono MyApp.exe

Я получаю сообщение об ошибке:

Сборка mscorlib.dll не найдена или не может быть загружена. Он должен был быть установлен в 'usr/lib/mono/2.0/mscorlib.dll'.

Если я перейду к этому местоположению, я вижу, что его не существует. Однако существует usr/lib/mono/4.0/mscorlib.dll (и несколько DLL файлов в одной папке).

Похоже, что существует несоответствие версии.

[в случае, если это имеет значение, mono -V показывает Mono JIT compiler version 2.10.8.1 (Debia 2.10.8.1-1ubuntu2)]

Ответ 1

Я получил его для работы, установив моно-полный:

sudo apt-get install mono-complete

После этого у меня были папки 2.0, 3.5, 4.0 и более под usr/lib/mono

Ответ 2

Если вы просто хотите запустить его, sudo apt-get install libmono2.0-cil libmono-system-net2.0-cil mono-runtime может быть достаточно.

Ответ 3

У меня такая же проблема, для моего дистрибутива (ubuntu 12. 32 бит ), моно-полный не был доступен. поэтому я только что установил следующие пакеты, и было доступно моно с наиболее важными dll:

sudo apt-get install mono-dmcs
sudo apt-get install mono-gmcs
sudo apt-get install mono-devel

Ответ 4

пакет, который вы ищете, был "libmono-system.data2.0-cil", который установлен с Mono-complete

Ответ 5

Я побежал sudo apt-get purge mono-*, а затем sudo apt-get install mono-complete. Это создало файлы в /usr/lib/mono, однако ошибка все еще была сгенерирована там, где она искала файл в /usr/local/lib/mono, которого не было.

Попытался изменить MONO_PATH на правильное местоположение, но не работал. Наконец, закончилось копирование всего каталога в /usr/local/lib, который, наконец, заставил его работать.