The .NET VM would be pretty much useless on other platforms. It is tied to Windows and it would be pretty hard to rewrite. But standard libraries would be different story.
The garbage collector for example would be very interesting to peruse. Sure threading and synchronization code would be differ but these have been emulated on Linux before to good effect, I don't see any serious barriers there.
I'm sure the codebase is factored internally to have some sort of platform abstraction.