加载F#模块不在当前目录中

时间:2018-02-16 16:13:35

标签: f# visual-studio-2017 .net-core-2.0

我正在使用面向.NET Core 2.0的Visual Studio 2017编写一个简单的F#控制台应用程序。我想知道是否可能open当前目录中没有的模块。

例如:

/root/foo.fs /root/SubDirectory/bar.fs

bar.fs如何打开Foo模块,反之亦然?

我已经尝试过了:

open Foo
open "../Foo"
open "C:/AbsolutePath/Foo"

对于最后两个,VS抱怨:

  

FS0010:打开声明中的意外字符串文字。预期的标识符,“全局”或其他标记。

似乎没有关于此的文档。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

实际上你只能在我相信的预览版中添加或重新排序VS2017中的文件(所以15.5.6还没有)。但是TheQuickBrownFox是正确的,包含模块的文件必须在fsproj文件中,顺序很重要。

对于VSCode,您可以使用Ionide中的Command(或Project Explorer):Ctrl + Shift + P:F#: Add Current File to Project以及F#: Move File Up/Down(F#Project Explorer上也有右键单击)

在Visual Studio 2017中,您可以右键单击项目并选择Edit .fsproj。 VS将在保存时自动重新加载文件,因此无需像VS2015那样卸载项目。它看起来像这样:

enter image description here

您可以看到MyModule.fs位于项目的根目录中,而MyModule.fs的行必须高于引用它的任何其他文件。您可以使用Alt +向上/向下箭头移动线条。

enter image description here

然后你可以打开这个模块并使用它。例如,Add在此模块中定义。

enter image description here

我还添加了#load指令,只有当你想在FSI中测试它时,编译器才会忽略它。