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

低レベルのOSXAPI / Frameworkを呼び出す必要がある場合は、MonoMacが最適です。ただし、まだすべてのOSXフレームワークがMonoMacにバインドされているわけではありません。Apple Developerのドキュメントから、現在MonoMacにバインドされていないSystemConfigurationAPIの関数が必要になると思います。

ただし、DllImportを使用して、不足している関数のバインディングをいつでも自分で作成できます。私は最近、DiskArbitration Framework(どちらもバインドされていません)を使用してそれを実行しました。これを参照として使用できます:http://git.gnome.org/browse/banshee/tree/src/Backends/Banshee.Osx /Banshee.Hardware.Osx/LowLevel?id=136fcbcc2e0421aba6be79306dc111fdabb3c749

于 2012-09-10T06:22:07.890 に答える