Linux:Mono安装和错误

时间:2014-03-09 17:57:30

标签: c# linux mono

在过去的几周里,我努力让Mono安装工作没有成功。

我在Debian6_x64Debian7_x64Ubuntu_12.04_x64上尝试过。 我使用apt-get使用默认的mono-complete安装它,尝试从GitHub和其他存储库编译它。无论是使用Mono 2.x还是3.x,我都遵循了几个教程,似乎没有任何工作。

不幸的是,我没有过去安装的错误日志,但目前我的情况是:

Ubuntu 12.04 x64


Mono JIT compiler version 3.4.0 (master/250756b Sun Mar  2 15:02:07 EST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  x86
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen

我正在尝试运行我在windows下编译的c#程序,我目前得到的错误是:

user@host:/home/pck# mono Program.exe
The assembly mscorlib.dll was not found or could not be loaded.
It should have been installed in the `/usr/local/lib/mono/4.5/mscorlib.dll' directory.

我一直在谷歌搜索,似乎没有任何工作。我非常感谢任何有用的建议。

谢谢!

6 个答案:

答案 0 :(得分:2)

现在最好的办法是安装Ubuntu Trusty 14.04(LTS),其默认存储库中包含mono 3.2.8(通过apt-get轻松安装)。

答案 1 :(得分:1)

使用Mono库,在Windows下开发的C#应用​​程序无法自动授权。 这取决于:

  • 用于在Windows下开发应用程序的库。据我所知,例如,WPF中使用的库在Mono中没有兼容性。查看this page以检查应用程序的兼容性。
  • 已安装Mono的版本。每个版本都引入了新库的修复,增强和支持。这意味着您的程序无法正常运行,并且您可能会遇到一些错误。

关于您的问题,您的应用程序似乎希望找到与.NET Framework 4.5相关的库,但它们并未安装。安装支持它们的正确版本。确保您的应用程序不使用Windows平台的特定功能。在这种情况下,您将不得不删除它们。

答案 2 :(得分:1)

单声道3.4 tarball中缺少一个文件,导致make install在安装2.0二进制文件后立即失败。其他版本永远不会被破坏,这就是为什么你缺少4.5

cd到解压缩的tarball并自己创建文件:

cd */path/to/unpacked*
echo -e '<Project xmlns=<a class="moz-txt-link-rfc2396E" href="http://schemas.microsoft.com/developer/msbuild/2003">"http://schemas.microsoft.com/developer/msbuild/2003">\n    <Import Project="..\Microsoft.Portable.Core.props" />\n    <Import Project="..\Microsoft.Portable.Core.targets" />\n</Project>' > mcs/tools/xbuild/targets/Microsoft.Portable.Common.targets

然后照常继续(不确定是否必须配置并再次制作)

./configure --prefix=/opt/mono-3.4
make
make install

答案 3 :(得分:0)

您为实现可移植代码做了什么?您确定没有平台依赖吗?实施一行:

System.Console.WriteLine("OK!");

删除所有不必要的依赖项并使用framework 2.0(最稳定)。

如果可行,问题不在于Linux上的Mono安装,而是代码中的内容。

答案 4 :(得分:0)

问题是您的单声道文件是安装在/usr/lib/mono中的,但它正在/usr/local/lib/mono中找不到它们。

将整个目录/usr/lib/mono复制到/usr/local/lib让它对我有用。

答案 5 :(得分:0)

我认为

This set指令(不是Ubuntu指令)在Ubuntu 12.04中为我工作。

我还从github克隆并遵循他们的./autogen.sh; make; make install; make check指示以防万一。