具有可移植库的F#类型提供程序

时间:2012-11-03 16:31:23

标签: f# windows-runtime type-providers

我正在构建一个Windows 8应用程序,并且我发现自己想要包含ISO-4217代码列表,这些代码是我在XML中的最新形式。

当然,所有国家/地区都有一些这样的代码。我认为Type Provider非常适合。但是,由于它们发出代码,我不能将它们与Portable Libraries一起使用。

如何编译类型提供程序以使其不使用emit,以便使用XML I've got

2 个答案:

答案 0 :(得分:3)

我没有创建可从可移植库中使用的类型提供程序的经验,但您似乎假设类型提供程序在运行时发出代码 。这实际上并不正确,因此在Portable设置中使用它们可能会更容易。

运行F#编译器时会执行类型提供程序。此时,可能生成一些类型,尽管只有一种类型提供者实际上这样做(有两种不同的类型 - 请参阅此SO answer)。但是,在编译使用F#类型提供程序的代码时,生成的程序集不会在运行时发出任何代码。

我认为Freebase type provider(在FSharpX中可用)是在便携模式下工作的提供程序的示例。我怀疑这部分技巧的一部分是将提供程序拆分为两个程序集 - 一个包含运行时所需的代码,另一个包含设计时组件(构建它们)类型信息,虽然它们也不需要发射)。请参阅FreebaseRuntime.fs中的TypeProviderAssembly属性。

答案 1 :(得分:0)

XmlProvider from FSharp.Data适用于可移植库