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
新增話題