Я не думаю, что есть какой-то нестандартный способ сделать это.Вам нужно будет определить свой собственный символ, такой как MONO
и вызвать компилятор с --define:MONO
при сборке версии Mono.
Тем не менее, я буду немного осторожен с этим - нет четкой концепции"скомпилировано для Mono" в F # и .NET.Когда вы компилируете код F #, вы всегда получаете dll
или exe
, который вы можете запустить где угодно, и ничто не мешает вам скопировать один вывод сборки и запустить его в другой среде.
Существует стандартный способ определения места выполнения программы во время выполнения с использованием:
Type.GetType("Mono.Runtime") != null
У вас могут быть веские причины для того, чтобы захотеть две отдельные сборки, но этовозможно, стоит подумать о том, можете ли вы просто сделать соответствующий выбор во время выполнения (это, вероятно, не сработает, если вы полагаетесь на некоторые библиотеки для Windows, такие как диаграммы WinForms).