我正在尝试使用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#创建一个库。
答案 0 :(得分:4)
<>
之间的参数是类型提供程序的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,则会出现一堆语法错误。
答案 1 :(得分:2)
数据必须在编译时可用,这是通过将文件引用放在尖括号中来实现的(注意它是包含文件路径的字符串文字,而不是包含数据的字符串绑定)。您还可以通过将包含格式的字符串文字放在括号中来实现此目的:
type Stocks = CsvProvider<"../docs/MSFT.csv">
let csv = new CsvProvider<"1,2,3", HasHeaders = false, Schema = "Duration (float<second>),foo,float option">()
有关详细信息,请参阅here。
答案 2 :(得分:1)
查看此link。基本上,您还需要添加System.Xml.Linq.dll
作为项目的参考。