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