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

时间:2016-01-15 14:54:13

标签: f# f#-scripting

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

  • LinqPad 4让我简单地添加nuget包
    • 没有intellisense或autocompletion
    • 在下载某些类型的软件包(例如templatus
    • 后删除软件包
  • LinqPad 5 beta让我添加nuget包
    • 在下载某些类型的软件包(例如templatus
    • 后删除软件包
    • 频繁失败(intellisense和compilation
  • 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
  • 与VSCode中intellisense / autocompletion引擎的相对路径不匹配,因此我无法从等式中删除VS.
  • 在该位置已有该软件包的计算机之外无效
  • 最终执行bunch of code并不能很好地跨越.fsx文件,并且必须根据包参考进行处理

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

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

2 个答案:

答案 0 :(得分:11)

The Ionide pluginsVsCode的{p> Atom具有您正在寻找的功能

VsCode指令

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

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

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

打开包含.fsx文件

的工作文件夹

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

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

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

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

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

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

答案 1 :(得分:1)

从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)