我可以从一个 fsx 文件中 install/reference 包吗?

Can I install/reference packages from within an fsx file?

我正在尝试找到一个简单的解决方案,不需要太多手动操作来引用包。在 .fsx 文件中。

所以我最终不得不在 VS2015 中使用 .fsx,同时使用 linqpad 来下载包(对于像 templatus 这样的包,它下载的是 exe 而不是 dll 仍然失败)。然后我可以将它们引用为

#I @"..\LINQPad\NuGet.FW46\FParsec\FParsec.1.0.2\lib\net40-client\" // references AppData\local\ ...  since . is %localappdata%\TEMP

我不想创建项目。我有大量单独的脚本,需要单独维护并供其他人按需使用。

是否有一个 IDE(或 fix/extension 对于其中一个提到的)可以给我智能感知、自动完成和包管理的 F# .fsx 文件轻松地从用户到用户,从机器到机器?

The Ionide plugins for VsCode and Atom 具有您正在寻找的功能

VsCode 说明

使用命令面板安装 Ionide 扩展 ionide-fsharp and ionide-paket

您需要将 F# 安装添加到 PATHon windows Rapid Enivornment Editor 是我 PATH 编辑的目标)

对于 F# 4.0 添加 C:\Program Files (x86)\Microsoft SDKs\F#.0\Framework\v4.0

打开将保存您的 .fsx 个文件的工作文件夹

通过命令面板执行 paket 命令将是您使用 nuget 包的主要界面

创建一个新的 .fsx 文件,(我建议使用 Advanced New File 扩展名而不是标准的 VsCode 方法)

第一步是 运行 paket init 这是使用 paket 管理您的包所必需的

如果您单击通知弹出窗口上的 open 按钮,您可以在侧面板中查看 paket 的输出

使用 add nuget package 命令并为包输入 extcore 后,您应该会看到工作树 更新为

然后您需要做的就是在脚本中引用包,您将得到您正在寻找的auto-completion

从 F# 5.0 开始,您现在可以使用 #r "nuget: Package" (ref):

#r "nuget: Newtonsoft.Json"
// Optionally, specify a version explicitly
// #r "nuget: Newtonsoft.Json,11.0.1"

open Newtonsoft.Json

let o = {| X = 2; Y = "Hello" |}

printfn "%s" (JsonConvert.SerializeObject o)