Как обнаружить, что F # программа скомпилирована на Mono? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь сделать некоторый код F # условным на основе среды времени компиляции и не могу найти определения для конкретной ОС, которые распознает компилятор F #. # если MONO не работает. Есть ли способ обнаружить ОС во время компиляции для F #?

1 Ответ

0 голосов
/ 17 мая 2018

Я не думаю, что есть какой-то нестандартный способ сделать это.Вам нужно будет определить свой собственный символ, такой как MONO и вызвать компилятор с --define:MONO при сборке версии Mono.

Тем не менее, я буду немного осторожен с этим - нет четкой концепции"скомпилировано для Mono" в F # и .NET.Когда вы компилируете код F #, вы всегда получаете dll или exe, который вы можете запустить где угодно, и ничто не мешает вам скопировать один вывод сборки и запустить его в другой среде.

Существует стандартный способ определения места выполнения программы во время выполнения с использованием:

Type.GetType("Mono.Runtime") != null

У вас могут быть веские причины для того, чтобы захотеть две отдельные сборки, но этовозможно, стоит подумать о том, можете ли вы просто сделать соответствующий выбор во время выполнения (это, вероятно, не сработает, если вы полагаетесь на некоторые библиотеки для Windows, такие как диаграммы WinForms).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...