I have try all available solutions my self to run one of my .net applications to other operating system for one of my customers.
there is one C# compiler and CLR plaform for BSD from Microsoft. they don't have any support for Linux.
it is completely an academic solution and only an small portion of .Net APIs is implemented.
then there is Mono from Novell
of course mono is far behind the MS implementation of .Net
the other obstacle I reached was some .Net components like "Enterprise services" were based on some services of windows operating system in this case COM+
so any port of .Net platform should include a port of large portion of windows operating system!
the problem with .Net portability is that is designed to take advantage of other Microsoft technologies.