System.TypeLoadException с MonoDevelop

Вчера я установил MonoDevelop 3.0 в свою установку Linux Mint 13, выполнив шаги, предложенные в этот ответ. Однако, когда я пытаюсь создать новое решение любого из предоставленных типов, я получаю следующую ошибку:

An error has occurred.

A type load exception has occurred.

System.TypeLoadException: A type load exception has occurred.
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 

Что означает эта ошибка и как ее исправить? Спасибо.


person missingfaktor    schedule 28.08.2012    source источник
comment
Похоже, что какой-то внутренний вызов P/Invoke (т. е. управляемый вызов собственного кода) не удался в самом движке Mono — возможно, есть какая-то проблема совместимости с Linux Mint.   -  person Jack P.    schedule 28.08.2012
comment
@JackP., спасибо. Возможные решения?   -  person missingfaktor    schedule 28.08.2012
comment
Вы получаете эту ошибку для любого типа проекта (например, C#, F# и т. д.) или только для проектов F#?   -  person Jack P.    schedule 28.08.2012
comment
@knocte, Mono JIT-компилятор версии 2.10.8.1 (Debian 2.10.8.1-5~dhx1~precise1)   -  person missingfaktor    schedule 29.08.2012


Ответы (1)


Одна из моих машин для разработки настроена на двойную загрузку Windows 7 и Ubuntu 12.04, и, поскольку на Ubuntu у меня была установлена ​​​​только Monodevelop 2.8, я подумал, что буду следовать шагам из ответа, на который вы ссылались (из askubuntu).

Когда я выполнил команду sudo apt-add-repository ppa:directhex/ppa, я получил большое предупреждающее сообщение, в котором говорилось, что PPA всегда содержит последние, возможно, нестабильные исходные коды для Monodevelop, и рекомендовалось использовать PPA из badgerports.org. Badgerports использует только стабильные и проверенные исходные коды — на момент написания этой статьи у него была версия Monodevelop 3.0.3.2+dfsg-1~dhx1~precise1.

Итак, я нажал Ctrl+C, чтобы отменить команду apt-add-repository, и вместо этого следовал этим инструкциям по настройке Badgerports PPA. После этого я выполнил команды для обновления локальных баз пакетов и установки Monodevelop:

sudo apt-get update
sudo apt-get install monodevelop

Как только monodevelop был установлен, я смог запустить его и без проблем создать/собрать/отладить новый образец проекта C#.

Чтобы установить надстройку F #, я нашел параметр «Надстройки» в одном из меню верхнего уровня («Инструменты», я думаю), развернул узел «Языковые привязки» дерева, выбрал привязку языка F # и нажал «Установить». В этот момент я смог создать/собрать/отладить новый проект F# без проблем.

Предостережение: я скопировал существующий проект F# из Windows/VS2010, а затем попытался собрать/отладить его. Я получил ошибку, похожую на вашу, затем Monodevelop сильно упал (пришлось kill процесс).

Если вы не можете заставить Monodevelop работать после его установки из Badgerports, вам следует связаться с разработчиками Mono и Monodevelop, чтобы они исследовали это — это сообщение об исключении заставляет меня поверить, что это может быть ошибка в Mono, но также может быть ошибка в Monodevelop, которая его запускает.

person Jack P.    schedule 29.08.2012
comment
Не удалось настроить здесь badgerports PPA. Менеджер программного обеспечения говорит, что ключ GPG может быть поврежден или недействителен. - person missingfaktor; 30.08.2012