我可以在fsx文件中安装/引用包吗?

Mas*_*low 5 f# f#-scripting

我试图找到一个简单的解决方案,而不是手动工作来引用包.在.fsx文件中.

  • LinqPad 4 让我简单地添加nuget包
    • 没有智能感知或自动完成
    • 下载后删除某些类型的软件包(例如templatus)
  • LinqPad 5 beta 让我添加nuget包
    • 下载后删除某些类型的软件包(例如templatus)
    • 频繁失败(智能感知和编译)
  • VS2015 不允许您下载/安装fsx文件的包(仅限于项目)
  • VSCode 不允许您下载/安装fsx文件的nuget或paket包.

所以我最终不得不在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
Run Code Online (Sandbox Code Playgroud)
  • 与VSCode中intellisense/autocompletion引擎的相对路径不匹配,因此我无法从等式中删除VS.
  • 在该位置已有该软件包的计算机之外不起作用
  • 最终做了一堆不能跨越.fsx文件的代码,并且必须根据包引用进行处理

我不想创建一个项目.我有大量单独的脚本,可以由其他人按需单独维护和使用.

是否有一个IDE(或其中一个的修复/扩展)可以为F#.fsx文件提供智能感知,自动完成和包管理,这些文件可以轻松地从用户到用户,从机器到机器工作?

clo*_*ine 11

该Ionide插件VsCode原子有你需要的功能,

VsCode指令

使用命令选项板安装Ionide扩展名ionide-fsharpionide-paket

您需要将F#安装添加到您的PATH (在Windows上快速Enivornment编辑器是我的goto进行PATH编辑)

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

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

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

制作一个新.fsx文件,(我建议使用标准VsCode方法的高级新文件扩展名)

第一步是运行paket init必须使用paket来管理你的包

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

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

然后你需要做的就是在脚本中引用包,你将获得你正在寻找的自动完成


the*_*ski 8

从 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)
Run Code Online (Sandbox Code Playgroud)