Mono on Linux 和 Missing methods 异常

Mono on Linux and Missing methods exception

一直在尝试使用可在 Linux 上运行的单声道编写 GTK# 应用程序(尽管 GTK# 与我的问题没有直接关系)。

现在,我 运行 遇到的问题是我在 IP 地址中使用函数 MapToIPv4()。当以 Mono 4.5 为目标时,这个函数工作得很好,但是当把它推广到我的 Linux 开发环境时,这个函数抛出

"程序集 /usr/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll 中缺少方法 System.Net.IPAddress::MapToIPv4(),在程序集中引用 myapp.exe"

经过一番研究,我发现这是因为此功能仅在 MONO / .NET 4.5 而不是 4.0 中并且似乎我的 Linux 环境只能达到 4.0(因为如果我的目标是 4.0,它不会用这个函数编译)。 (4.5 也没有显示为已安装的单声道软件包,尽管名为 "Mono Core library (for CLI 4.5)" 的东西显示为已安装。

如何让我的 Linux 允许使用此功能?这可能吗?我正在使用 Debian Wheezy (7.8),我使用的单声道版本是 4.0.1,最新的。如果需要更多信息,请告诉我。 谢谢。

首先要澄清一些混淆:Mono 的版本号与 .NET 版本号有 no relationship,即 Mono 3.12.0 还提供了 .NET 4.5 配置文件。

如您所见,MapToIPv4() 方法仅适用于 .NET 4.5 及更高版本(不适用于 .NET 4.0)。您看到的异常是因为 Mono 尚未实现此特定 API。有一个用于添加它的公开拉取请求:https://github.com/mono/mono/pull/641.

在此期间,您唯一的选择是自己在代码中实现转换。