【问题标题】:DomainTypes in XmlProvider FS0039 not definedXmlProvider FS0039 中的 DomainTypes 未定义
【发布时间】:2013-08-14 22:52:59
【问题描述】:

我正在尝试使用 FSharp.Data XmlProvider。 根据示例,您可以访问嵌套类型并创建一个函数,该函数将接收其中一种类型的参数。 https://github.com/fsharp/FSharp.Data/blob/master/samples/library/XmlProvider.fsx(第 177 行)

但是当我尝试执行以下操作时:

type businessesT = XmlProvider<"Businesses.xml">
type businessT = businessesT.DomainTypes.Business
let testfunc (b:businessesT.DomainTypes.Business) = 
    b

在我真正编译之前它似乎可以工作,然后我得到

错误 FS0039:未定义“业务”类型

更新: 可以使用 FSharp.Data (XmlProvider.fsx) 中的示例重现该问题 在第 205 行之后添加类型别名

type Rss = XmlProvider<"http://tomasp.net/blog/rss.aspx">
type test = Rss.DomainTypes.Channel

奇怪的是,带有 printDiv 函数的示例正在工作......

【问题讨论】:

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


    【解决方案1】:

    这很可能是由加载类型提供程序的一些问题引起的 - 如果编译器无法加载类型提供程序,则它无法运行它,因此不会定义任何提供的类型,如 Business

    您是在脚本文件中使用#r,还是在项目中通过“添加引用”引用类型提供程序?如果您使用#r,请检查该行是否有任何错误消息。如果是项目,请检查编译器输出的其他错误信息。

    我已经列出了some common reasons why type provider fails to load in another answer

    【讨论】:

    • 抱歉没有详细说明。提供程序已加载。我正在使用添加引用,并且能够使用提供程序读取 xml。我不能做的是访问 DomainTypes 下的嵌套类型。
    • 我使用 fsx 文件进行了快速测试,就像在示例页面中一样,但是当我尝试定义一个接收嵌套类型的函数时,我得到了同样的错误。我在 VS2012 上,但确实安装了 VS2013,不确定它是否会干扰。
    【解决方案2】:

    这可能与"type provider" not recognized when building project 的问题相同,已在 FSharp.Data 1.1.10 中修复

    【讨论】:

      猜你喜欢
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多