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

Posted

技术标签:

【中文标题】无法使用 Mono 运行 .net 应用程序 - 找不到 mscorlib.dll(版本不匹配?)【英文标题】:Unable to run .net app with Mono - mscorlib.dll not found (version mismatch?) 【发布时间】:2012-05-16 10:29:58 【问题描述】:

我有一个简单的.net 命令行工具,在Windows 下编写和编译,使用.net 3.5SP1。我想使用 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)]

【问题讨论】:

【参考方案1】:

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

【讨论】:

这个答案比“安装完整单声道”更准确。完整的单声道需要 ~170Mb,而 NET 2.0 库大约是 ~45Mb。 不幸的是,这对我不起作用 (pastebin.com/XduV6vPd)。安装 mono-complete 花费了更多时间,但它解决了问题。 @Tagc 对我来说,在我另外做了sudo apt-get install libmono-system-net2.0-cil后消息消失了@【参考方案2】:

我通过安装 mono-complete 让它工作:

sudo apt-get install mono-complete

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

【讨论】:

您是否尝试在 Windows 上首先使用 app.config 将 supportedRuntime 设置为 .NET 4?然后您应该能够使用 Mono 将其作为 .NET 4 运行,因为 mono 可执行文件应该将其作为 .NET 4 应用程序来选择。 我在 NOOB v1.2 上遇到了同样的问题。在我重新开始使用 Raspbian “Wheezy” os 之后,正如 Lex 指出的那样,在 app.config 中有 使我的应用程序使用正确的版本(4.0)并且我不必安装单完整的。 对于那些在 3.4 版本中遇到此问题的用户,请参阅 ***.com/questions/22285830/…【参考方案3】:

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

尝试将 MONO_PATH 更改为正确的位置,但没有成功。最后最终将整个目录复制到 /usr/local/lib 最终让它工作。

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于无法使用 Mono 运行 .net 应用程序 - 找不到 mscorlib.dll(版本不匹配?)的主要内容,如果未能解决你的问题,请参考以下文章

在 Mono 上运行 ASP.NET 5 的 Ubuntu 上使用 MVC 6 调整图像大小

windows下如何用mono运行.net程序

windows下如何用mono运行.net程序

如何检测正在使用哪个 .NET 运行时(MS 与 Mono)?

不装mono,你的.NET程序照样可以在Linux上运行!

如何使用 Mono 在 XSP 上运行 .NET 4.5?