【问题标题】:The type 'XmlProvider' is not defined未定义类型“XmlProvider”
【发布时间】:2013-07-12 23:38:42
【问题描述】:

我正在尝试使用 FSharp.Data 第三方库,但在 XmlProvider 类上遇到错误 The type 'XmlProvider' is not defined

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. 时,会给出四个选项:CsvFreebaseOperatorsJsonRuntimeImplementation

我错过了什么吗?我对 F# 比较陌生。所以,很抱歉这个简单的问题。我在 GitHub 上查看过,但没有看到任何提及这个问题。我正在 F# 中创建一个库。

【问题讨论】:

    标签: f# type-providers f#-data


    【解决方案1】:

    &lt;&gt; 之间的参数是类型提供者的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() 
    

    请注意,Type Providers 是 F# 3.0 的一个特性,所以这只适用于 VS2012 或更高版本。如果你使用的是 VS2010,你只会得到一堆语法错误。

    【讨论】:

    • 那么我应该使用 VS 2012 才能使用 FSharp.Data.DesignTime 吗?我在 Windows 8 上使用 VS 2010。这可能是我的问题吗?当我输入 XmlProvider 时,它无法识别它,然后在文件名 - "Unexpected string literal in type arguments" 下给我一个错误
    • 类型提供者是 F# 3.0 的一个特性,所以你需要使用 VS2012 或 VS2013。
    • 好的,把它放在你的答案中,我会标记你是正确的。感谢您的帮助!
    • 我已将其添加到答案中
    【解决方案2】:

    数据必须在编译时可用,这是通过将文件引用放在尖括号中来实现的(请注意,它是包含文件路径的字符串文字,而不是包含数据的字符串绑定)。您还可以通过将包含格式的字符串文字放在括号中来实现此目的:

    type Stocks = CsvProvider<"../docs/MSFT.csv">
    
    let csv = new CsvProvider<"1,2,3", HasHeaders = false, Schema = "Duration (float<second>),foo,float option">()
    

    更多信息请参见here

    【讨论】:

    • 我试过了,没用。我想我可能发现了问题。 FSharp.Data.DesignTime 在框架 4.5 中,我在 4.0 中工作。
    【解决方案3】:

    看看这个link。基本上你还需要添加System.Xml.Linq.dll 作为对你项目的引用。

    【讨论】:

    • 我实际上把它放在了我的参考文献中。我想我可能发现了问题。 FSharp.Data.DesignTime 在框架 4.5 中,我在 4.0 中工作。
    • FSharp.Data.DesignTime 仅在编译器内部运行,而不是在运行时运行,因此它的 .NET 版本没有影响。重要的 .NET 版本是 FSharp.Data.dll 之一,目前为 4.0
    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    相关资源
    最近更新 更多