Вы можете определить символ с помощью #define
и проверить его, используя #if
и #else
.
Вы также можете передать символ компилятору, используя опцию компилятора /define
.
См. Полный список директив препроцессора C # здесь .
#define MONO // Or pass in "/define MONO" to csc
#if MONO
//mono specific code
#else
//other code
#endif
Согласно этому SO-ответу, моно-компилятор определяет символ __MonoCS__
, поэтому будет работать следующее:
#if __MonoCS__
//mono specific code
#else
//other code
#endif
Рекомендуемый метод, которым руководствуется Mono «Портирование в Windows», как описано в этом ответе от @ Mystic , таков:
public static bool IsRunningOnMono ()
{
return Type.GetType ("Mono.Runtime") != null;
}
Это, конечно, проверка во время выполнения по сравнению с проверкой времени компиляции , описанной выше, поэтому может не работать для вашего конкретного случая.