无法使用Mono运行.net应用程序 – 找不到mscorlib.dll(版本不匹配?)

我有一个简单的.net命令行工具,使用.net 3.5SP1在Windows下编写和编译。 我想用Mono在Linux上运行它。

我正在使用Ubuntu 12.04,并使用Ubuntu软件中心安装了Mono Runtime。 如果我尝试在terminal上启动我的应用程序,请执行以下操作:

mono MyApp.exe 

我得到的错误:

程序集mscorlib.dll未find或无法加载。 它应该已经安装在'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) ]

我通过安装单声道完成工作:

 sudo apt-get install mono-complete 

之后,我有usr / lib / mono下的文件夹2.0,3.5,4.0以及更多

如果你只是想运行它, sudo apt-get install libmono2.0-cil mono-runtime就足够了。

我得到了同样的问题,对于我的发行版(Ubuntu 12. 32位),单声道完全不可用。 所以我刚刚安装了下列软件包,并且用最重要的dll单声道可用:

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

你正在寻找的软件包是“Mono-complete”安装的“libmono-system.data2.0-cil”

我运行sudo apt-get purge mono-*然后sudo apt-get install mono-complete 。 这创build了/ usr / lib / mono中的文件,但是在/ usr / local / lib / mono中找不到的文件仍然生成错误。

试图改变MONO_PATH到正确的位置,但没有奏效。 最后最终将整个目录复制到/ usr / local / lib,最终使它工作。