Я слышал о моно для разработки кроссплатформенных приложений .Net, но почему сам .Net Framework включает условную компиляцию, например
#if PLATFORM_UNIX
...
#endif // PLATFORM_UNIX
, как можно увидеть в .Net Framework Справочный источник для System.IO.Path