Mono
出自 维基百科
- Mono 是一个旨在创建与 .NET Framework 兼容的工具集的 [...] 项目,其中包括 C# 编译器和 通用语言运行时等。
安装
如果您需要 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 IDE。如果您不是从 AUR 安装 Rider,您将需要安装 mono-msbuild,因为最近的 Rider 版本放弃了对 xbuild 的支持,转而支持来自 net-core 的 MSBuild。
如果您想要 API 文档浏览器以及一些测试和开发工具,您必须安装 mono-tools。
故障排除
当我尝试直接运行 Mono 二进制文件时,出现错误:“无法执行二进制文件”
Mono 的 binfmt_misc 处理程序尚未设置,如 Mono 项目网站上详细解释的那样。
要解决此问题,重启 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 软件包的一部分。