Mono - Arch Linux 中文维基

跳转到内容

# Mono

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Mono，最近一次同步于 2024-09-03，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

摘自 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 开发插件/集成，包括 Vim、Emacs 和 Visual 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-sync`和 `mozroots` 都是 mono 软件包的一部分。

## 参见

- Mono 官方网站
- Mono 手册
- Mono 的应用程序接口参考
- ECMA-334: C# Language Specification
- ECMA-335: Common Language Infrastructure (CLI)
- 运行 Mono 应用程序的说明

分类：​

- 框架

Mono
添加话题