Mono itself is cross platform.
By developing with mono specifically, you will be able to run your executable on any platform that has mono available for it. That in and of itself is mono's biggest advantage over developing on MSFT's .Net platform. Said differently: If you build you assembly with mono, you're guarantee cross-platform support, where as building with .Net may not give you that.
Mono has made some upgrades to deficiencies in .Net (for example Mono.security offered features not found in .Net 2.0, though I believe MSFT picked them up for later releases).
It is possible to build a .Net Assembly using Visual Studio, and have Mono run it on, however your assembly must take care to use only the frameworks/libraries that Mono supports, and that any unmanaged assemblies referenced by your assembly are available for your chosen OS. In otherwords: if your assembly makes use of a C++ dll on windows, you must ensure you have the correct .a/.so file for linux.
To run your .net assembly in Linux (assuming mono is installed properly) you type: mono myprogram.exe