Тип 'XmlProvider' не определен

Я пытаюсь использовать FSharp.Data сторонняя библиотека, но получаю ошибку The type 'XmlProvider' is not defined на XmlProvider учебный класс.

namespace KMyMoney

open FSharp.Data

  module Read =

    let xml = File.ReadAllText("KMyMoneySampleFile.xml")
    type KMyMoneySource = XmlProvider<xml>

Я использую NuGet, чтобы получить библиотеку. Библиотека 'FSharp.Data 1.1.8'

Когда я печатаю FSharp.Data. Есть четыре варианта: Csv, FreebaseOperators, Json, а также RuntimeImplementation,

Я что-то пропустил? Я относительно новичок в F#. Итак, извините за простой вопрос. Я смотрел на GitHub, но не видел упоминаний об этой проблеме. Я создаю библиотеку в F#.

3 ответа

Решение

Параметр между <> это Sample параметр провайдера типа, который должен быть константой времени компиляции. Этот образец используется для определения структуры XML.

Попробуйте это вместо этого:

namespace KMyMoney

open FSharp.Data

module Read =

    type KMyMoneySource = XmlProvider<"KMyMoneySampleFile.xml">

а затем сделать

let xml = KMyMoneySource.Load("KMyMoneySampleFile.xml")

или если вы читаете тот же файл, который вы использовали в качестве примера параметра XmlProvider, просто сделайте это:

let xml = KMyMoneySource.GetSample() 

Обратите внимание, что поставщики типов являются функцией F# 3.0, поэтому она работает только в VS2012 или более поздней версии. Если вы используете VS2010, вы просто получите кучу синтаксических ошибок.

Данные должны быть доступны во время компиляции, что достигается путем помещения ссылки на файл в угловые скобки следующим образом (обратите внимание, что это строковый литерал, содержащий путь к файлу, а не строковая привязка, содержащая данные). Вы также можете добиться этого, поместив строковый литерал, содержащий формат в скобках:

type Stocks = CsvProvider<"../docs/MSFT.csv">

let csv = new CsvProvider<"1,2,3", HasHeaders = false, Schema = "Duration (float<second>),foo,float option">()

Смотрите здесь для получения дополнительной информации.

Проверьте эту ссылку. В основном вам нужно добавить System.Xml.Linq.dll также как ссылка на ваш проект.

Другие вопросы по тегам