基本上,要疯狂地进行单元测试!我在一个宠物项目(protobuf-net)中支持mono和C#,让它在不同平台上编译甚至是有趣的事情(我支持mono、CF、Silverlight等)。在mono中有许多编译器bug(即使在当前版本中也是如此),特别是涉及泛型的bug——这意味着你可能需要使用稍微不同的代码来使它在所有平台上都能编译。然后你需要考虑你需要哪些框架特性。例如,避免使用任何类似WPF/WCF/WF的东西。但如果你坚持使用核心2.0特性,一般情况下是可以的。不过,在许多地方,mono仍然会抛出NotImplementedException异常。最近的一个例子中,有两种做法:旧的方法在mono上可以工作,但在MS上已经被弃用;新版本在MS上可以工作,但在mono上会抛出NotImplementedException异常。有趣!
记得要注意以下两点: 不要试图做任何花哨的东西。 不要期望在 Mono 上第一次尝试就能成功。 Mono 在处理日常任务时效果非常好,例如字符串操作和显示网页等。但是对于那些需要使用 .NET 运行库中一些细微隐藏角落的任务来说,则表现糟糕。比如密码学仍然停留在 1.1 版本,即使有些功能也无法正常工作。 总之,Mono 并非解决所有问题的万能药。