我该如何访问FSharp.Data.JsonExtensions?

5
抱歉,如果这个问题有点不清楚。在 F# 4.0 中关于包的混乱状态下,这是我所能做的最好的了。
《Expert F# 4.0》一书由 Don Syme、Adam Granicz 和 Antonio Cisternino 编写,其中包含处理 JSON 数据的代码。代码从以下内容开始:
open FSharp.Data
open FSharp.Data.JsonExtensions

我在Visual Studio中安装了FSharp.Data。但是,单词“JsonExtensions”下面有红色的波浪线,其余代码无法编译。
在解决方案资源管理器中进入添加引用,我没有找到FSharp.Data.JsonExtensions包。我还在NuGet下查找,也没有找到FSharp.Data.JsonExtensions包。JsonExtensions有文档,表明它是一个模块。然而,在Visual Studio中使用点号时,它不会出现在FSharp.Data.下(只有一个条目:Unit Systems
如何使此模块中的代码可用,以便我可以运行书中的代码?

2
你使用的是哪个版本的VS? - FoggyFinder
2
你确定那个软件包被正确地安装了吗? - FoggyFinder
1
@FoggyFinder - 我正在使用VS社区版14.0.25431.01更新3和Microsoft .NET Framework版本4.6.01586。 - Soldalma
@FoggyFinder - 不,我不确定包是否被正确安装。 - Soldalma
1个回答

3
这是因为您实际上没有安装FSharp.Data(所以Foggy是正确的)。有一个FSharp.Data命名空间,但您需要Nuget软件包才能使用它。因此,请转到工具|Nuget软件包管理器|管理解决方案的Nuget软件包并下载最新的FSharp.Data。这将自动将其添加到VS中的引用文件中:

Nuget the package

参见:

enter image description here

现在您可以使用它:

enter image description here

如果您正在使用 .fsx 脚本,请确保使用 #r 引用它。 #r @"..\packages\FSharp.Data.2.3.2\lib\net40\FSharp.Data.dll" 在这种情况下,您只需右键单击引用(nuget 安装后),VS 将为您生成路径:

enter image description here

如果您没有看到“发送到 F# 交互式”选项,我强烈建议您安装 Visual F# Power Tools。您可以探索其他访问/序列化 JSON 文件的方法:有 JSON 类型提供程序Newtonsoft JSONFSharpluChironFSPickler

我进入了“解决方案的管理包”选项卡,然后在“已安装”中点击了带有绿色复选标记的FSharp.Data。右侧打开了一个窗口,显示了两个复选框(第一个是所有项目,第二个是当前项目)。如果我勾选它们,就可以按“卸载”按钮来卸载FSharp.Data(我没有这样做)。而“安装”按钮则没有任何作用。所以看起来我已经为这个项目安装了FSharp.Data v.2.3.2。我错过了什么吗? - Soldalma
你能否编辑你的问题并添加一个参考截图,或者你的fsproj文件内容。或者创建一个新的解决方案和项目,并按照答案中的步骤进行操作。 - s952163
我找到了问题所在。很抱歉,这是一个愚蠢的错误。我正在使用一个 .fsx 文件,所以我必须像你建议的那样发送到 F# Interactive。让我困惑的是,我没有在 F# Interactive 窗口中输入代码,而是通过编辑器在 .fsx 文件中输入代码。我知道我必须将其发送到 F# Interactive 以在 F# Interactive 窗口中运行代码,但我不知道 Intellisense 在我编辑 .fsx 文件时无法捕获 FSharp.Data。 - Soldalma
好的。在这种情况下,请在文件顶部使用#r指令。 - s952163
1
谢谢。我刚刚发现我可以做: #if INTERACTIVE #r @"C:\Users\ ..." endif 这将仅在交互式会话中运行 #r 指令。 - Soldalma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接