在MonoDevelop中创建一个Mono控制台应用程序,针对OS X上的Mono / .NET 4.0,作为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的引用。
我错过了什么?
修改:发现NetworkInterface.GetAllNetworkInterfaces()
在MonoDevelop中创建新的C#控制台应用时起作用,但在现有项目(NetworkComms.net)内无效 - 他们两者都是相同的,Mono,.NET 4.0与System
和System.Net
v4.0.0.0的引用相同,有什么区别?
答案 0 :(得分:1)
如果您需要调用低级OS X API /框架,MonoMac是您的最佳候选者。但是,并非所有OS X框架都绑定在MonoMac中。从Apple Developer文档中,我认为您需要SystemConfiguration API中当前不受MonoMac约束的函数。
但是你总是可以使用DllImport自己为缺失的函数创建一个绑定。我最近使用DiskArbitration Framework(也没有绑定)完成它,您可以将其用作参考:http://git.gnome.org/browse/banshee/tree/src/Backends/Banshee.Osx/Banshee.Hardware.Osx/LowLevel?id=136fcbcc2e0421aba6be79306dc111fdabb3c749