一直在尝试使用可在 Linux 上运行的单声道编程 GTK# 应用程序(尽管 GTK# 与我的问题没有直接关系)。
现在,我遇到的问题是我在 IPaddress 中使用函数 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 软件包,但有一个名为“Mono Core 库(适用于 CLI 4.5)”的东西。
如何让我的 Linux 允许使用此功能?这可能吗?我使用的是 Debian Wheezy (7.8),我使用的单声道版本是最新的 4.0.1。如果需要更多信息,请告诉我。 谢谢。
最佳答案
首先要澄清一些困惑:Mono 的版本号有 no relationship带有 .NET 版本号,即 Mono 3.12.0 还附带了 .NET 4.5 配置文件。
正如您所发现的,MapToIPv4()
方法仅在 .NET 4.5 及更高版本中可用(在 .NET 4.0 中不可用)。您看到的异常是因为 Mono 尚未实现此特定 API。有一个开放的拉取请求来添加它:https://github.com/mono/mono/pull/641 .
与此同时,您唯一的选择是在代码中自行实现转换。
关于c# - Linux 上的 Mono 和缺少方法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30329619/