You just shouldn't bother. It's not worth the risk.
Good summary, but to elaborate a bit:
- Mono is not quite .NET, so incompatible, and with Microsoft's history of making changes that break compatibility, mono is not likely to ever catch up.
- .NET applications are so often not well designed, in my experience. I suspect it may be because of the combination of poor development skills and an IDE that makes it all too easy to make poor design choices. I don't know if it still is this bad, but last I worked with Windows development, the C++ IDE I used had encapsulated network protocols in classes that could then be placed on the application window. Very easy, but unfortunately the Windows desktop is not re-entrant, which means that it is a very bad idea to, in effect, wire a listener for an asynchronous background activity into it. All you need is two network packets right after each other and a slow update of the screen, and the whole things dies.
- There does not seem to be an obvious need for .NET - we already have Java, which is universally available (IBM have even designed a dedicated 'Java CPU') and highly standardised. Just look at the heaps of acronyms: JMX, JNDI, ...
- There are several, very good IDEs that support Java extremely well: NetBeans, JDeveloper, Eclipse and no doubt loads more. NetBeans, for example, comes with features that nag you into adopting a good programming style.
And so on. .NET looks to me like a dead end. It may not be dead yet, but it is definitely not what you would call sprightly.