F# 类型提供程序在引用项目而不是引用项目中查找示例文件
F# Type provider looks for sample file in referencing project, not referenced project
我有一个库,我在其中使用 FSharp.Data
的 JsonProvider
从 JSON 文件构建类型。但是,当我在控制台应用程序中引用该项目并尝试访问生成的类型时,它不会编译,而是在控制台应用程序的目录中查找示例文件,产生类似
的错误
Cannot read sample JSON from 'sample.json': Could not find file 'C:\Some\Where\TheSolution\ConsoleApp\sample.json
我真的必须将示例文件复制到每个引用项目,还是必须将其添加为 DLL 才能使其正常工作,还是我做错了什么?
当您在库中使用 F# 数据类型提供程序并引用该库时,编译器将尝试访问示例 - 这是因为类型在每次使用时都会被擦除并重新创建。 (它们也是延迟生成的,因此它们是在使用时动态生成的,所以这是唯一的选择。)
如果您可以将文件与您的库一起复制,那可能是最好的选择,但我们试图解决这个问题 - 您可以将示例作为资源嵌入并告诉类型提供者先寻找资源。请参阅 F# 数据文档中的 Using JSON provider in a library:
type WB = JsonProvider<"../data/WorldBank.json",
EmbeddedResource="MyLib, worldbank.json">
例如,在 F# Data Toolbox 库中使用。唉,让它正常工作有点麻烦。
我有一个库,我在其中使用 FSharp.Data
的 JsonProvider
从 JSON 文件构建类型。但是,当我在控制台应用程序中引用该项目并尝试访问生成的类型时,它不会编译,而是在控制台应用程序的目录中查找示例文件,产生类似
Cannot read sample JSON from 'sample.json': Could not find file 'C:\Some\Where\TheSolution\ConsoleApp\sample.json
我真的必须将示例文件复制到每个引用项目,还是必须将其添加为 DLL 才能使其正常工作,还是我做错了什么?
当您在库中使用 F# 数据类型提供程序并引用该库时,编译器将尝试访问示例 - 这是因为类型在每次使用时都会被擦除并重新创建。 (它们也是延迟生成的,因此它们是在使用时动态生成的,所以这是唯一的选择。)
如果您可以将文件与您的库一起复制,那可能是最好的选择,但我们试图解决这个问题 - 您可以将示例作为资源嵌入并告诉类型提供者先寻找资源。请参阅 F# 数据文档中的 Using JSON provider in a library:
type WB = JsonProvider<"../data/WorldBank.json",
EmbeddedResource="MyLib, worldbank.json">
例如,在 F# Data Toolbox 库中使用。唉,让它正常工作有点麻烦。