摘自 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.
安裝
如果需要 VisualBasic.Net 支持,則必須使用 mono-basicAUR 安裝 VisualBasic.Net 解釋器。
運行 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 軟體包的一部分。