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