I'm developing a huge console application for Unix using C# via Mono. If I develop that app using M Visual Studio and .NET 3.5 and I carefully neglect to use win32 specific API calls, should I expect that application to automatically work in my Unix box? Or should I just get MonoDevelop and go the Mono way?
According to the Mono compatibility page Mono supports:
Everything in .NET 3.5 except WPF and WF, limited WCF.
If you want to develop in Visual Studio, you should do regular testing on Mono to make sure you aren't hitting a rough edge.
You can also use the Mono Tools add-in for Visual Studio that allows you to test remotely on Linux, deploy it on Linux systems, etc. It's commercial but there's a free trial.
In general if you only use stuff supported on mono you can develop using Visual Studio however you must also test often on mono. And not just mono for windows but mono running on the target OS. You can do this from visual studio by remotely debugging on the target OS using the mono addins for visual studio.
Having said that MonoDevelop is really getting very good now, I see no reason not to skip Visual Studio altogether and develop using MonoDevelop on the target OS. That way you don't have to worry about differences at all.