Well Mono has finally reached 2.0. This is great news! .NET skills now can span *nix, OSX, and Windows platforms. But is your app or assembly capable of running on Mono? Find out with MoMa.
Of course this is just a heuristic check and only finds out if your application on the surface has issues with running on a mono platform such as calls to p/invoke to windows apis or unsafe code that uses native calls but it is a great place to start.
The Mono Migration Analyzer (MoMA) tool helps you identify issues you may have when porting your .Net application to Mono. It helps pinpoint platform specific calls (P/Invoke) and areas that are not yet supported by the Mono project.
While MoMA can help show potential issues, there are many complex factors that cannot be covered by a simple tool. MoMA may fail to point out areas that will cause problems, and may point out areas which will not actually be an issue.
Use the results provided as a guide to get you started on porting your application, but remember the true test is actually running your application on Mono.
For a description of the errors that MoMA detects and how to deal with them, see MoMA – Issue Descriptions.
I have recently been really interested in making platforms and applications that aren’t limited by the OS they are contained in. Thus mono is a very interesting platform now that it supports 2.0 fully and all the generic goodness to limit boxing/unboxing, common code between .net 2.0 apps (which are pretty much mainstream now) and developing for more of a standard that ensures your apps are portable.
Granted .NET 3.0 and 3.5 (pretty much the same version really with the addition of new frameworks such as WCF, LINQ which is very cool and functional as well as Silverlight) but most places deployed code is still .NET 2.0 and the poor souls working on very constricting .NET 1.0 and 1.1.
Also, recently Moonlight the Mono version of Silverlight has been released for alpha.