跳转到内容

Mono

来自 Arch Linux 中文维基

摘自 Wikipedia

Mono is a [...] project to create a .NET Framework-compatible set of tools including, among others, a C# compiler and a Common Language Runtime.

安装[编辑 | 编辑源代码]

安装 mono 软件包。

如果需要 VisualBasic.Net 支持,则必须使用 mono-basicAUR 安装 VisualBasic.Net 解释器。

注意:安装软件包后,证书颁发机构 会存储在 /usr/share/.mono/certs/Trust/ 中,但删除软件包并不会删除它们。[1]

运行 Mono 应用程序[编辑 | 编辑源代码]

您可以手动调用 mono 来执行 Mono 二进制文件:

$ mono programsname.exe

您也可以直接执行 Mono 二进制文件,就像本地二进制文件一样:

$ chmod 755 exefile.exe
$ ./exefile.exe

测试 Mono[编辑 | 编辑源代码]

新建一个文件:

test.cs
using System;

public class Test {
 public static void Main(string[] args) {
  Console.WriteLine("Hello World!");
 }
}

然后运行:

$ mcs test.cs
$ mono test.exe
Hello world!

开发[编辑 | 编辑源代码]

OmniSharp 为多个编辑器提供 .NET/Mono 开发插件/集成,包括 VimEmacsVisual Studio Code

或者,您也可以安装 riderAUR 集成开发环境。如果不是AUR 安装 Rider,则需要安装 mono-msbuild,因为最近的 Rider 版本放弃了对 xbuild 的支持,转而使用来自 net-core 的 MSBuild。

如果需要 API 文档浏览器以及一些测试和开发工具,则必须安装 mono-tools

问题解决[编辑 | 编辑源代码]

当我尝试直接运行 Mono 二进制文件时,我遇到了一个错误: “cannot execute binary file”[编辑 | 编辑源代码]

Mono的 binfmt_misc 处理程序尚未建立,Mono Project website 上有详细说明。

要解决这个问题,restart systemd-binfmt 服务。

我收到一个 TLS 握手(或类似的基于证书的)错误[编辑 | 编辑源代码]

造成这种情况的原因可能是 Mono 证书存储区中的证书丢失,或者 Mono 证书存储区中仍然存在过期的破损证书。

如果可能,请运行 curl -vI 或类似程序,在 Mono 外部复制失败请求,以确保系统证书存储处于良好状态。

  • cert-sync /etc/ssl/certs/ca-certificates.crt 将 mono 存储与系统存储同步,并添加缺失的证书。
  • 要删除已损坏的证书(即,如果上述操作无效),请删除 /usr/share/.mono 目录,然后重新运行 cert-sync /etc/ssl/certs/ca-certificates.crt
  • 最后,旧版工具 mozroots --import --ask-remove 可绕过系统证书存储区,直接下载 Mozilla 的信任存储区。这同样无法删除损坏的证书,而且如果依赖于私有 CA,还可能导致其他问题。

cert-syncmozroots 都是 mono 软件包的一部分。

参见[编辑 | 编辑源代码]