Mono
外观
摘自 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 软件包的一部分。