老实说,您需要告诉我们更多关于您的情况audience/预期市场提供了一个很好的答案,但是我的 0.02 美元来自一些开发经验,如果你想做“正确”的话,桌面上 Mono 的 GUI 开发是一个多目标的事情。您将需要以异常模块化的方式开发共享后端,然后为每个平台编写一次 UI。
Windows
如果您的应用程序还处于起步阶段,在 Mono 上实现的 Windows.Forms 是一个很好的拐杖,它允许您针对 Windows立即地并在 OS X 和 Linux 上以某种有点残缺的方式进行部署。但请注意,我在 IRC 上被告知 Mono 上的 Windows.Forms 开发基本上已经死了。旧的错误没有得到更新,例如,在测试的几分钟内,我遇到了 SelectionBackColor 在 OS X 上的 RichTextBox 中无法工作的情况(这是 OS X 上用于 Windows.Forms 的 Mono 使用的 lib Mono 中的问题)。很明显它就在那里,也许对于快速实用程序很有用,您可以在其中围绕其限制进行编码(请参阅问题here https://stackoverflow.com/questions/12421900/举个例子)。
OS X
对于针对 OS X 的目标,如果您有一个真正的商业最终用户应用程序,您将需要习惯,嗯,与界面生成器 http://docs.xamarin.com/guides/ios/advanced_topics/xib_code_generation. 我应该在这里明确指出,使用 XCode 和 Interface Builder绝对需要您可以访问运行 OS X 的机器。否则,您将不得不使用 Windows.Forms,或者我认为最好是 Gtk#。
Xamarin 在使其 IDE 与 XCode 中内置的本机 UI 建立连接方面做得非常出色。 iOS 开发也是如此。尽管文档很薄弱,但它运行得相当好。有一个Michael Hutchingson 于 2011 年发布的精彩视频描述了这一过程 http://mjhutchinson.com/journal/2011/06/monomac_video_ndc_2011,尽管我认为它已经过时了(即“旧”)。 (直接链接到视频 http://ndc2011.macsimum.no/mp4/Day3%20Friday/Track4%201500-1600.mp4)
我假设如果您想瞄准 Mac App Store,Interface Builder 也是您唯一真正的选择。但是看,它是一个与 C# 代码存根的本机 UI,综合考虑,这是一个很好的妥协。
Linux
我并没有真正针对Linux。看起来 Gtk# 是一个自然的选择,但我在那里没有太多的实际帮助。我的东西是在 Windows.Forms 中构建的,但也有一些粗糙的地方,就像在 OS X 中一样。如果我更认真一点,我会从 Gtk# 开始,而 MonoDevelop 也有它的 GUI RAD。
严肃、成熟、跨平台 Gtk# 应用程序的示例
快速说明:Banshee http://banshee.fm/ uses Gtk# https://live.gnome.org/Banshee/Roadmap以 OS X、Windows (alpha) 和 Linux 为目标。通过查看以下内容,您可以了解在大型应用程序跨平台上使用 Gtk# 的难度。它的邮件列表 https://mail.gnome.org/mailman/listinfo/banshee-list和其他资源。
抱歉,这个消息并不容易。没有灵丹妙药/唯一正确的答案。
201607 更新:我认为答案正在慢慢变成使用 Xamarin.Forms 来实现跨平台。目前,您可能仍需要编写单独的 Mac 界面,但有理由相信它在某个时候也会支持 Xamarin.Forms;见下文。
不幸的是,如果您的目标是 Linux,我认为您现在仍然处于与以前相同的状态。
- Windows:您现在可以使用Xamarin.Forms 和 UWP https://developer.xamarin.com/guides/cross-platform/windows/universal/.
- macOS:基本上还是在同一个地方,但上周末一位 Xamarin 员工告诉我,Xamarin.Forms 正在为 OS X 进行非正式开发。我相信这是 GitHub 上的存储库 https://github.com/xamarin/Xamarin.Forms/tree/mac。 (甚至还有一个 tvOS 的分支。)