加载不在当前目录中的 F# 模块
Loading F# modules not in the current directory
我正在编写一个简单的 F# 控制台应用程序,Visual Studio 2017 年目标 .NET Core 2.0
。我想知道是否可以 open
当前目录中不存在的模块。
例如:
/root/foo.fs
/root/SubDirectory/bar.fs
如何bar.fs
打开Foo
模块,反之亦然?
我已经试过了:
open Foo
open "../Foo"
open "C:/AbsolutePath/Foo"
对于最后两个,VS 抱怨:
FS0010 : Unexpected string literal in open declaration. Expected identifier, 'global' or other token.
似乎没有关于此的文档。
如有任何帮助,我们将不胜感激。
实际上你只能在预览版的 VS2017 中添加或重新排序文件,我相信(所以在 15.5.6 上还没有)。但是 TheQuickBrownFox 是正确的,包含你的模块的文件必须在 fsproj
文件中,顺序很重要。
对于 VSCode,您可以使用 Ionide 中的命令(或项目资源管理器):Ctrl+Shift+P:F#: Add Current File to Project
以及 F#: Move File Up/Down
(右键单击菜单F# 项目资源管理器也是如此。
在 Visual Studio 2017 年,您可以 right-click 项目并选择 Edit .fsproj
。 VS 将在保存时自动重新加载文件,因此无需像 VS2015 中那样卸载项目。它看起来像这样:
您可以看到 MyModule.fs
在项目的根目录中,带有 MyModule.fs 的行需要位于引用它的任何其他文件之上。您可以使用 Alt+Up/Down 箭头来移动行。
那你打开这个模块就可以使用了。例如Add
定义在这个模块中。
我还添加了#load
指令,这只是在你想在FSI中测试它时,编译器会忽略它。
我正在编写一个简单的 F# 控制台应用程序,Visual Studio 2017 年目标 .NET Core 2.0
。我想知道是否可以 open
当前目录中不存在的模块。
例如:
/root/foo.fs
/root/SubDirectory/bar.fs
如何bar.fs
打开Foo
模块,反之亦然?
我已经试过了:
open Foo
open "../Foo"
open "C:/AbsolutePath/Foo"
对于最后两个,VS 抱怨:
FS0010 : Unexpected string literal in open declaration. Expected identifier, 'global' or other token.
似乎没有关于此的文档。
如有任何帮助,我们将不胜感激。
实际上你只能在预览版的 VS2017 中添加或重新排序文件,我相信(所以在 15.5.6 上还没有)。但是 TheQuickBrownFox 是正确的,包含你的模块的文件必须在 fsproj
文件中,顺序很重要。
对于 VSCode,您可以使用 Ionide 中的命令(或项目资源管理器):Ctrl+Shift+P:F#: Add Current File to Project
以及 F#: Move File Up/Down
(右键单击菜单F# 项目资源管理器也是如此。
在 Visual Studio 2017 年,您可以 right-click 项目并选择 Edit .fsproj
。 VS 将在保存时自动重新加载文件,因此无需像 VS2015 中那样卸载项目。它看起来像这样:
您可以看到 MyModule.fs
在项目的根目录中,带有 MyModule.fs 的行需要位于引用它的任何其他文件之上。您可以使用 Alt+Up/Down 箭头来移动行。
那你打开这个模块就可以使用了。例如Add
定义在这个模块中。
我还添加了#load
指令,这只是在你想在FSI中测试它时,编译器会忽略它。