无法使用 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 中有我运行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 调整图像大小