gpt4 book ai didi

macos - Fsharp.Data,HtmlDocument 没有扩展后代

转载 作者:行者123 更新时间:2023-12-02 01:01:11 26 4
gpt4 key购买 nike

我正在 Mac 上试用 f#,但遇到了一个非常简单的脚本问题。我正在关注 this tutorial , 然而它在 results.Descendants ["a"].

有趣的是,VS 将 .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

Edit2:我用 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"

编辑 3:在 fsharpi 和 vs 中运行的区别:

  • fsharpi 使用的是单声道,而 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

最佳答案

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

<FSharpCoreImplicitPackageVersion>4.4.1.18</FSharpCoreImplicitPackageVersion>

到项目配置。有了它,代码似乎可以工作,但是调试器(监 window 口)和即时窗口仍然无法识别 Descendants 方法。我什至不知道这怎么可能。我假设 VS 中存在某种错误。

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

关于macos - Fsharp.Data,HtmlDocument 没有扩展后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50505304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com