>>6
1.Its MS-Only.
Mono is a non-MS implementation. The language is standardized and open.
2.Its slow and does questionable things in background(aka malware).
Not really, the source is freely available from Microsoft, and you can easily decompile managed parts too. It can do things in the background, such as JIT-related optimizations, if you let it.
3.It require users to install the runtime.
Or it comes preinstalled. One runtimes installed once, so you can use a lot of other applications which require it.
4.Its a virtual machine and cannot directly interface with the system
Huh? Ever heard of P/Invoke, it's how FFI is done in C#, there's also the possiblity of having native code in the PE file mixed with bytecode (managed C++)