我有一个 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从一些模糊的系统相关路径手动加载所有必需的(例如#load a package in F# Interactive (FSharpChart.fsx)),但我想一定有更好的方法来做到这一点。
有几种选择可以做到这一点,但没有一个是完美的。
如果您使用的是 Ionide,则可以右键单击 F# 视图中的项目并选择“生成 FSI 引用”。这将创建一个 F# 脚本,为您加载所有依赖项和项目文件。在下面写下你的测试代码。
这种方法的缺点:
如果您使用 Paket,那么您可以为您的项目生成“加载脚本”:
dotnet paket generate-load-scripts
Run Code Online (Sandbox Code Playgroud)
这将生成./.paket/load. 每个依赖项(及其传递依赖项)和每个 Paket“组”都会有一个加载脚本。
paket.dependencies如果您添加此行,这可以自动与您同步:
generate_load_scripts: true
Run Code Online (Sandbox Code Playgroud)
请参阅:https ://fsprojects.github.io/Paket/paket-generate-load-scripts.html
这种方法的缺点:
#load手动投影文件.NET 5 的新功能是,您可以直接在文件中写入 Nuget 字符串fsx。对于快速脚本来说,这是一个很棒的功能!
generate_load_scripts: true
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点:
#load手动投影文件在理想的世界中,我们能够做这样的事情:
#r "nuget: FParsec"
// Package with a specific version
// #r "nuget: FParsec,1.1.1"
open FParsec
#load "./Types.fs"
// etc...
Run Code Online (Sandbox Code Playgroud)
这里有一个问题:https ://github.com/dotnet/fsharp/issues/8764
| 归档时间: |
|
| 查看次数: |
2378 次 |
| 最近记录: |