c# - Linux 上的 Mono 和缺少方法异常

标签 c# .net linux mono

一直在尝试使用可在 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/

相关文章:

c# - 在 Web API 中解密不记名 token

c# - 来自 native 应用程序的 CoCreateInstance C# COM 组件找不到引用

.net - 在 Windows 7 中禁用和启用屏幕保护程序

c - 在 64 位二进制文​​件上分配超过 2gb 失败

c# - 在 Silverlight 的 Entity Framework 中将 Contains as 'IN' 条款与 LINQ 一起使用

c# - jQuery .serialize() 问题

.net - 是否可以在 MSBuild 中计数?

linux - 了解 linux 上次重启命令的结果

linux - ARM/Linux内存泄漏: Can a user program retain memory after terminating?

c# - await Task 与 await Task.Run(voidMethod)