我想将一堆 fs 文件转换为 fsx 文件。
每个 fs 文件引用类中的每一个都定义在 base.fs 中,因此不是在项目中编译并依赖编译器解析,而是基于文件。
这意味着如果我让所有这些文件都包含 base.fsx,并且一个文件引用另一个文件,那么 base.fsx 将被包含两次。
有谁知道如何使用 fsx 文件进行条件包含?
预处理器文档状态
F# 中没有#define 预处理器指令。您必须使用编译器选项或项目设置来定义 #if 指令使用的符号。
如果您从单个fsx
脚本加载所有文件,那么您可以按正确的顺序从项目中加载各个文件,并且各个库文件不需要base.fs
直接加载 - 代码将被定义,因为它已被加载前。
例如,如果您有base.fs
:
module Base
let test() = 10
你有more.fs
which 不加载但base.fs
使用那里定义的函数:
module More
let more () =
Base.test() + 1
然后您可以在 F# 交互中加载所有文件(例如,在 中script.fsx
),它会正常工作:
#load "base.fs"
#load "more.fs"
More.more()
唯一的缺点是你在编辑时不会得到 IntelliSense more.fs
(因为编辑器不知道base.fs
)。要解决此问题,最好将文件保存在 Visual Studio 的项目中。但是您仍然可以在 F# 交互中加载它们以进行实验和测试。