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

66

У меня есть простой инструмент командной строки .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)]

Теги:
mono

5 ответов

87
Лучший ответ

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

sudo apt-get install mono-complete

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

  • 1
    Вы пытались использовать app.config, чтобы сначала установить для SupportRuntime значение .NET 4 в Windows? Тогда вы сможете использовать Mono для запуска его как .NET 4, так как исполняемый файл mono должен использовать его как приложение .NET 4.
  • 2
    Это сработало для меня. Спасибо!
Показать ещё 2 комментария
28

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

  • 3
    Этот ответ является более точным, чем «установить полный моно». Для полного моно нужно ~ 170 Мб, а для библиотек NET 2.0 - около 45 Мб.
  • 0
    К сожалению, это не сработало для меня ( pastebin.com/XduV6vPd ). Установка mono-complete заняла немного больше времени, но это решило проблему.
Показать ещё 1 комментарий
4

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

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

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

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

1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню