I’ve heard of mono for developing cross platform .Net applications but why does the .Net Framework itself include conditional compilation, for example
#if PLATFORM_UNIX
...
#endif // PLATFORM_UNIX
as can be seen in the .Net Framework Reference Source for System.IO.Path
This is for the SSCLI, which uses much of the same codebase and can run on UNIX