2012-06-08 3 views
0

Я бегу mono 2.10.6 на openSUSE 12.1. Не должно быть System.Data.dll в /usr/lib/mono/4.0 или /usr/lib/mono/2.0?Является ли моя моно-версия неисправной?

Я тестирую приложение .NET, скомпилированное на окнах. Приложение имеет ссылку на automapper и я получаю следующее сообщение об ошибке при попытке запуска приложения:

Unhandled Exception: System.TypeInitializationException: An exception 
was thrown by the type initializer for AutoMapper.Mappers.DataReaderMapper ---> 
System.IO.FileNotFoundException: Could not load file or assembly 'System.Data, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its 
dependencies. 

File name: 'System.Data, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089' 

Вот выход моно --version:

linux-19xt:~ # mono --version 
Mono JIT compiler version 2.10.6 (tarball Sat Oct 29 18:16:09 UTC 2011) 
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com 
    TLS:   __thread 
    SIGSEGV:  altstack 
    Notifications: epoll 
    Architecture: amd64 
    Disabled:  none 
    Misc:   debugger softdebug 
    LLVM:   supported, not enabled. 
    GC:   Included Boehm (with typed GC and Parallel Mark) 
+0

Проблема 'компилируется в Windows'. Структура исполняемого файла различна на разных платформах. Его необходимо скомпилировать на openSUSE. –

+0

@ cole-johnson Спасибо, но не совсем верно. .NET-сборки _interpreted_ CLR для окон и моно, реализация с открытым исходным кодом .net. – robertfriberg

+0

Они содержат один и тот же MSIL, да. Но структура исполняемых файлов Windows PE и исполняемых файлов ELF Linux различна. Кроме того, как отметил Лекс Ли, алгоритм подписи отличается. –

ответ

0

Установка «моно-полной» или «MonoDevelop», и вы больше не должны видеть эту проблему. На unbuntu команда ...

sudo apt-get install mono-complete 

или для MonoDevelop язя (который также устанавливает моно-полный)

sudo apt-get install monodevelop 

У меня было 3 виртуальных машин (1 только с моно выполнения установки 1 с установленный monodevelop и 1 с установленным моно-комплектом), все из которых работают с одним и тем же исполняемым файлом, но только тот, который видел описанную вами проблему, был единственным, у которого установлена ​​только установленная версия. Выполнение «моно-полной» команды выше исправило проблему.

0

сборки Mono не имеют тот же PublicKeyToken, как Microsoft, поскольку Microsoft не будет делиться ключами с командой Mono, поэтому вам нужно настроить AutoMapper для игнорирования PublicKeyToken.

Однако я не уверен, что если AutoMapper может быть сконфигурирован для работы с Mono, так как нет никакого официального объявления в любом месте, и есть вопрос открыт на GitHub,

https://github.com/AutoMapper/AutoMapper/issues/217

И есть почта нить об этом, тоже,

http://groups.google.com/group/automapper-users/browse_thread/thread/773193330f7d12ef?pli=1

Смежные вопросы