f# - 如何检查 F# 预处理器中的操作系统?

标签 f# operating-system ionide

我们有多个人在同一个 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/

相关文章:

f# - F#Deedle访问行

f# - 定义一个接受元组序列的 F# 通用函数

f# - 如何对数组中的记录进行有效的临时连接?

c++ - 如何在 NUMA 机器上的不同节点上分配数组的一部分?

f# - 如何使 ionide-fsharp 格式器在 VSCode 中工作

c# - 在 F# 中处理空值

Windows ubuntu 子系统上的 Python 语法错误

operating-system - 为什么发出陷阱不是特权任务?

c# - VSCode OmniSharp/C# intellisense 看不到 Ionide/F# lib 模块/命名空间

F# (mono) for VS Code on MacOS : bugs