我们有多个人在同一个 F# 项目上工作。有些使用 MacOS 和 Visual Studio Code 以及 Ionide而其他人则使用 Windows 和 Visual Studio。在F#代码中,我们需要访问一些文件,但是MacOS使用/
来指定路径,而Windows使用\
。在 F# 中,我们如何制作如下内容:
#if OS_WINDOWS
let path = "path\to\file.txt"
#elif OS_MAC
let path = "path/to/file.txt"
#endif
最佳答案
没有内置的预定义符号来指示您正在编译的操作系统。当您使用 .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")
关于f# - 如何检查 F# 预处理器中的操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59665490/