我有一个库,我使用FSharp.Data
的{{1}}来构建JSON文件中的类型。但是,当我在控制台应用程序中引用此项目并尝试访问生成的类型时,它不会编译,但会在控制台应用程序的目录中查找示例文件,从而产生类似
JsonProvider
我是否真的必须将示例文件复制到每个引用项目,或者我是否必须将其添加为DLL以使其正常工作,或者我做错了什么?
答案 0 :(得分:3)
当您在库中使用F#数据类型提供程序并引用该库时,编译器将尝试访问该示例 - 这是因为这些类型将被擦除并在每次使用时重新创建。 (它们也是懒惰生成的,所以它们是在使用时动态生成的,所以这是唯一的选择。)
如果您可以使用库复制文件,那可能是最好的选择,但我们尝试解决此问题 - 您可以将示例作为资源嵌入,并告诉类型提供程序首先查找资源。请参阅F#数据文档中的Using JSON provider in a library:
type WB = JsonProvider<"../data/WorldBank.json",
EmbeddedResource="MyLib, worldbank.json">
例如,这在F# Data Toolbox库中使用。让这种方法运作良好有点繁琐。