首页 > 解决方案 > 在 F# Interactive 中加载 dotnet 项目文件

问题描述

我有一个 F# dotnet 项目,在我的.fsproj(例如<PackageReference Include="FSharp.Data" Version="3.0.0-beta4" />)中有一些依赖项。

现在我想测试我编写的模块中的一些功能,所以我开始fsharpi尝试使用#load "Program.fs";;.

但是,然后我得到error FS0039: The type 'CsvProvider' is not defined.

如何加载具有正确依赖项的模块?

我已经看到了一些解决方法,包括dll从一些模糊的系统相关路径手动加载所有必需的 s(例如#load a package in F# interactive (FSharpChart.fsx)),但我想必须有更好的方法来做到这一点。

标签: .netf#

解决方案


为了访问导入库中的代码,您需要告诉 FSI 加载它们。

在最低级别,这可以通过#r指令来完成:

#r "./packages/FSharp.Data/lib/whatever/FSharp.Data.dll"

这通常足以满足一次性目的。

但是,如果有很多引用,您的 IDE 通常可以为您自动执行此操作。例如,在 Visual Studio 中,您可以右键单击项目并选择“将引用发送到 F# Interactive”或“生成带有引用的脚本文件”(不确定确切的措辞)。如果您安装了 Ionide 扩展,则在 VSCode 中可以使用相同的选项。

此外,还有一个用于直接支持 FSI 中的包的积极提案+原型 - 请参阅https://github.com/fsharp/fslang-suggestions/issues/542。然而,这还没有合并,似乎已经停滞了一点。


推荐阅读