What are the best practices for writing code that can be cross compiled on .NET (windows) and Mono (linux)? Although I am very familiar with .NET, I am not that experienced in M
We use MonoDevelop and Visual Studio for development but what's key is to keep around a good NAnt build script to build the entire thing on a single shot (Joel Spolsky's rules).
The main point IMO is to state very clear that the software has to be cross-platform, so it is not about "porting to linux/mono" but actually developing each iteration on the required platforms.
We had to avoid some features at the beginning (using Mono/.NET for 5 years now for a commercial product) and we still stick to .NET Remoting, but that's not a big deal in multi-platform development in my opinion.
Counting on the soft debugger since almost one year is also a great thing.