F#: 脚本文件为什么无法识别模块?

4
我在Visual Studio 2015中创建了一个新的F#控制台应用程序项目,然后创建了一个名为Calc.fs的简单模块文件。
module Calc

let add a b = a + b

我这样将一个F#脚本文件添加到项目中:
open Calc

let c = add 1 2 

我在脚本文件中看到以下编译器错误:

命名空间或模块“Calc”未定义

值或构造函数“add”未定义

为什么我的模块没有被脚本文件识别?我该如何解决这个问题? 请注意,我的脚本文件在项目文件的顺序中出现在模块之后。

enter image description here


2
F#有严格的编译顺序。您需要将Calc移动到文件列表中Program之前的位置。 - Fyodor Soikin
谢谢。我刚试了一下,把 Program.fs 移到底部。还是不行。 - urig
1个回答

14

.fsx文件不会与项目的其他部分一起编译;它们没有意识到除非您明确地让它们知道。这对于任何外部DLL(实际上包括许多.NET Framework中的内容)以及其他F#代码都是如此。

您需要添加

#load "Calc.fs"
在脚本文件的顶部添加代码,以便在评估脚本的其余部分之前告诉编译器加载该代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接