Fsharp.Data, HtmlDocument не имеет расширения Потомки - PullRequest
0 голосов
/ 24 мая 2018

Я пробую f # на Mac и столкнулся с проблемой с очень простым скриптом.Я следую этому руководству , однако оно приводит к ошибкам. 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 работает, а расширения - нет.

Есть идеи, как это исправить?

Редактировать: code

// 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: Я скачал FSharp.Data сnuget вручную, и я могу запустить приведенный ниже скрипт в fsharpi.Я не знаю, в чем разница между этим и тем, что делает визуальная студия?

#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

1 Ответ

0 голосов
/ 24 мая 2018

Кажется, проблема в FCore. Sharp Visual Studio использует по умолчанию.Чтобы использовать конкретную версию, недостаточно добавить ее через nuget, но необходимо добавить

<FSharpCoreImplicitPackageVersion>4.4.1.18</FSharpCoreImplicitPackageVersion>

в конфигурацию проекта.При этом кажется, что код работает, но отладчик (окно просмотра) и непосредственное окно все еще не могут распознать метод Descendants.Я не знаю, как это вообще возможно.Я предполагаю, что какая-то ошибка в VS.

Другой вариант, кажется, использует бета-версию FSharp.Data 3 (с теми же часами / немедленной проблемой)

...