无法运行带有Mono的.net应用-找不到mscorlib.dll(版本不匹配?)


67

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

我正在使用Ubuntu 12.04,并使用Ubuntu软件中心安装了Mono Runtime。如果我尝试通过以下方式在终端中启动我的应用程序:

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)]

Answers:


92

我通过安装mono-complete使它起作用:

sudo apt-get install mono-complete

之后,我在usr / lib / mono下有文件夹2.0、3.5、4.0等


1
您是否尝试过使用app.config在Windows上首先将supportedRuntime设置为.NET 4?然后,您应该能够使用Mono将其作为.NET 4运行,因为mono可执行文件应将其作为.NET 4应用程序使用。
Lex Li

我在NOOB v1.2中遇到了同样的问题。就像Lex指出的那样,我再次开始使用Raspbian“ Wheezy”操作系统后,在app.config中具有<supportedRuntime version =“ v4.0” />使得我的应用可以使用正确的版本(4.0),而不必安装单完成。
鲍勃,

1
对于那些遇到此问题与3.4版,请参见stackoverflow.com/questions/22285830/...
natli

28

如果您只想运行它,sudo apt-get install libmono2.0-cil libmono-system-net2.0-cil mono-runtime可能就足够了。


3
这个答案比“安装完整的单声道”更为准确。完全单声道需要〜170Mb,而NET 2.0库约为〜45Mb。
m3nda

不幸的是,这对我不起作用(pastebin.com/XduV6vPd)。安装mono-complete花费了更多时间,但解决了该问题。
Tagc

@Tagc对我来说,此消息在我另外做完之后就消失了sudo apt-get install libmono-system-net2.0-cil
NIA

4

我遇到了同样的问题,对于我的发行版(ubuntu 12. 32 Bit),单声道完成不可用。所以我只安装了以下软件包,并且具有最重要dll的mono已可用:

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

1

您要查找的软件包是“ Mono-complete”安装的“ libmono-system.data2.0-cil”


1

我跑了sudo apt-get purge mono-*,然后sudo apt-get install mono-complete。这在/ usr / lib / mono中创建了文件,但是在/ usr / local / lib / mono中查找不存在的文件时仍然产生错误。

试图将MONO_PATH更改为正确的位置,但是没有用。最后,最终将整个目录复制到/ usr / local / lib中,从而使它正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.