sbc wrote:

Imagine writing a program that worked on Windows / Mac / Linux with changing the code (you would still need to recompile for the target platform though)

MSIL is platform agnostic. If you compile on a Mac to MSIL there is no reason why you shouldn't be able to use the same executable on Windows. Of course this is providing you stay away from pinvoke and OS specific portions of the library, i.e. Microsoft.Win32.