I recently wrote a little C# GUI application on Linux, compiling and running using mono. I found that I had to use the "gmcs" compiler in order to have access to modern C# and .Net features (mono 1.9 ships with several different compilers).
And when compiling the .exe file, I found that I had to add the "-target:winexe" switch to make the app run on Windows without having a command line pop up behind the application.
I've yet to find out how to compile a .Net application which on Windows will run from network drives without requiring special .Net security configuration on the PC. (I think this is a general issue with .Net applications, but I'm still learning.)