Нет встроенного предопределенного символа, указывающего, для какой операционной системы вы компилируете. Когда вы используете. NET, вы обычно используете одну и ту же скомпилированную сборку во всех операционных системах, так что в любом случае это не то, что вы разумно можете сделать в препроцессоре.
Вы можете проверить, какая у вас ОС работает во время выполнения, используя System.Environment
:
open System
let path =
if Environment.OSVersion.Platform = PlatformID.Win32NT then @"path\to\file.txt"
else @"path/to/file.txt"
Тем не менее, если вас беспокоит только косая черта и обратная косая черта в пути, вы можете просто использовать:
let path = System.IO.Path.Combine("path", "to", "file.txt")