F#Type提供程序在引用项目中查找示例文件,而不是引用项目

时间:2017-12-04 12:01:04

标签: f# f#-data

我有一个库,我使用FSharp.Data的{​​{1}}来构建JSON文件中的类型。但是,当我在控制台应用程序中引用此项目并尝试访问生成的类型时,它不会编译,但会在控制台应用程序的目录中查找示例文件,从而产生类似

的错误
JsonProvider

我是否真的必须将示例文件复制到每个引用项目,或者我是否必须将其添加为DLL以使其正常工作,或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

当您在库中使用F#数据类型提供程序并引用该库时,编译器将尝试访问该示例 - 这是因为这些类型将被擦除并在每次使用时重新创建。 (它们也是懒惰生成的,所以它们是在使用时动态生成的,所以这是唯一的选择。)

如果您可以使用库复制文件,那可能是最好的选择,但我们尝试解决此问题 - 您可以将示例作为资源嵌入,并告诉类型提供程序首先查找资源。请参阅F#数据文档中的Using JSON provider in a library

type WB = JsonProvider<"../data/WorldBank.json", 
  EmbeddedResource="MyLib, worldbank.json">

例如,这在F# Data Toolbox库中使用。让这种方法运作良好有点繁琐。