2012-06-08 18 views
0

我在openSUSE 12.1上運行單聲道2.10.6。不應該在/usr/lib/mono/4.0或/usr/lib/mono/2.0中有System.Data.dll?我的單聲道安裝是否損壞?

我正在測試在Windows上編譯的.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' 

這裏是單 - 版本的輸出:

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程序集由Windows上的CLR和由開放源代碼.net框架實現的mono進行了解釋。 – robertfriberg

+0

它們包含相同的MSIL,是的。但是Windows PE可執行文件和ELF Linux可執行文件的結構是不同的。另外,正如Lex Li指出的那樣,簽名算法是不同的。 –

回答

0

安裝「單完成」或「MonoDevelop的」,你應該不會再看到這個問題。在unbuntu命令是...

sudo apt-get install mono-complete 

或爲MonoDevelop的IDE(也安裝單完成)

sudo apt-get install monodevelop 

我有3個虛擬機(1只單運行安裝,1安裝了monodevelop ide,以及安裝了mono-complete的1)都運行完全相同的可執行文件,但只有一個看到您描述的問題是僅安裝了單聲道運行時的問題。運行上面的「mono-complete」命令解決了問題。

0

Mono的組件沒有像Microsoft一樣的PublicKeyToken,因爲Microsoft不會與Mono團隊共享密鑰,所以您需要配置AutoMapper以忽略PublicKeyToken。

不過,我不知道,如果AutoMapper可以被配置爲單聲道工作,因爲沒有正式公佈任何地方,有一個問題,在GitHub上公開,

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

而且還有一個郵件線程有關,也

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