1

我想将一堆 fs 文件转换为 fsx 文件。

每个 fs 文件引用类中的每一个都定义在 base.fs 中,因此不是在项目中编译并依赖编译器解析,而是基于文件。

这意味着如果我让所有这些文件都包含 base.fsx,并且一个文件引用另一个文件,那么 base.fsx 将被包含两次。

有谁知道如何使用 fsx 文件进行条件包含?

处理器文档状态

F# 中没有#define 预处理器指令。您必须使用编译器选项或项目设置来定义 #if 指令使用的符号。

4

1 回答 1

5

如果您从单个fsx脚本加载所有文件,那么您可以按正确的顺序从项目中加载各个文件,并且各个库文件不需要base.fs直接加载 - 代码将被定义,因为它已被加载前。

例如,如果您有base.fs

module Base   
let test() = 10

你有more.fswhich 不加载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# 交互中加载它们以进行实验和测试。

于 2013-03-03T18:18:44.653 回答