Fsharp.Data,HtmlDocument没有扩展Descendants。

3
我正在尝试在 Mac 上使用 F# 并使用一个非常简单的脚本时遇到问题。我正在遵循这个教程,但是它在 results.Descendants ["a"] 处中断。
有趣的是,VS 将 .Descendants 识别为 results 的有效方法,但在运行时(仅尝试不带参数的 Descendants)时,我会得到:
error CS1061: 'HtmlDocument' does not contain a definition for 'Descendants' and no 
extension method 'Descendants' accepting a first argument of type 'HtmlDocument' could
be found (are you missing a using directive or an assembly reference?)

似乎 FSharp.Data 只被部分导入了或者说有问题。有趣的是,HtmlDocument 能够工作,但扩展却不行。
有什么想法可以解决这个问题吗?
编辑:代码
// Learn more about F# at http://fsharp.org

open System
open FSharp.Data

[<EntryPoint>]
let main argv =
    let results = HtmlDocument.Load("http://www.google.co.uk/search?q=FSharp.Data")
    let links = 
        results.Descendants "a"
        |> Seq.choose (fun x -> 
               x.TryGetAttribute("href")
               |> Option.map (fun a -> x.InnerText(), a.Value())
        )
    0 // return an integer exit code

编辑2: 我手动使用NuGet下载了FSharp.Data,现在我可以在fsharpi中运行下面的脚本。我不知道这和Visual Studio做什么有什么区别?

#r "./FSharp.Data.2.4.6/lib/net45/FSharp.Data.dll" 
open FSharp.Data

let results = HtmlDocument.Load("http://www.google.co.uk/search?q=FSharp.Data")
let d= results.Descendants "a"

第三次编辑:在fsharpi和vs中运行的区别:

  • fsharpi使用mono,而VS使用dotnet(即.net core 2)
  • nuget下载了FSharp.Core 4.0.0.1,而VS使用的是4.3.4

我似乎无法让VS使用FSharp.Core 4.0.0.1。即使我添加了特定版本,它仍然使用4.3.4。


2
在帖子中添加了代码。将FSharp.Data作为NuGet依赖项添加到VS解决方案中。该解决方案本身是一个.Net Core控制台应用程序。 - dkone
2
VS Community for mac: https://www.visualstudio.com/vs/mac/ - dkone
1
哇,太棒了。 - FoggyFinder
1
4.3.4. 但是它抱怨需要 .Net 4 的某些东西,而目标是 .Net core 2。这是我唯一能看到的可能问题。 - dkone
1
你的代码在 Windows 上的 F# 交互式环境中可以正常工作。我怀疑这可能是与环境/运行时有关的问题。 - Aaron M. Eshbach
显示剩余4条评论
1个回答

2

看起来问题出在Visual Studio默认使用的FCore.Sharp上。要使用特定版本,仅通过nuget添加是不够的,还必须添加

<FSharpCoreImplicitPackageVersion>4.4.1.18</FSharpCoreImplicitPackageVersion>

将其添加到项目配置中。这样似乎代码可以工作,但是调试器(监视窗口)和立即窗口仍然无法识别“Descendants”方法。我不知道这怎么可能。我假设是VS中的某种错误。

另一个选项似乎是使用FSharp.Data 3 beta(有相同的观察/立即问题)


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