4

在 MonoDevelop 中针对 OS X 上的 Mono/.NET 4.0 创建一个 Mono 控制台应用程序,用作 TCP 套接字服务器。

以下代码行失败(您通常会在 Windows 端使用):

var interfaces = NetworkInterface.GetAllNetworkInterfaces();

...有错误System.DllNotFoundException: iphlpapi.dll

最好我能说这仅在 Windows 和 Linux 上受支持。但是,似乎还有另一种为 Mac 设计的方法:

System.Net.NetworkInformation.MacOsNetworkInterface.GetAllNetworkInterfaces();

虽然这似乎被 MonoDevelop 识别,但它无法编译并出现The type or namespace 'MacOsNetworkInterface' does not exist in the namespace 'System.Net.NetworkInformation'.错误。已经引用了 System 和 System.Net。

我错过了什么?

编辑:发现当我在 MonoDevelop 中创建新的 C# 控制台应用程序时确实有效,但在现有项目( NetworkComms.netNetworkInterface.GetAllNetworkInterfaces() )中不起作用- 它们的目标相同,Mono,.NET 4.0 具有相同的引用和v4 .0.0.0,有什么区别?SystemSystem.Net

4

1 回答 1

1

如果您需要调用低级 OS X API/框架,MonoMac是您的最佳选择。然而,并不是所有的 OS X 框架都绑定在 MonoMac 中。从 Apple Developer 文档中,我认为您需要SystemConfiguration API中的函数,这些函数目前不受 MonoMac 的约束。

但是您始终可以使用 DllImport 自己为缺少的函数创建绑定。我最近使用 DiskArbitration 框架(也没有绑定)完成了它,您可以将其用作参考:http ://git.gnome.org/browse/banshee/tree/src/Backends/Banshee.Osx /Banshee.Hardware.Osx/LowLevel?id=136fcbcc2e0421aba6be79306dc111fdabb3c749

于 2012-09-10T06:22:07.890 回答