我正在构建一个Windows 8应用程序,并且我发现自己想要包含ISO-4217代码列表,这些代码是我在XML中的最新形式。
当然,所有国家/地区都有一些这样的代码。我认为Type Provider非常适合。但是,由于它们发出代码,我不能将它们与Portable Libraries一起使用。
如何编译类型提供程序以使其不使用emit,以便使用XML I've got?
答案 0 :(得分:3)
我没有创建可从可移植库中使用的类型提供程序的经验,但您似乎假设类型提供程序在运行时发出代码 。这实际上并不正确,因此在Portable设置中使用它们可能会更容易。
运行F#编译器时会执行类型提供程序。此时,可能生成一些类型,尽管只有一种类型提供者实际上这样做(有两种不同的类型 - 请参阅此SO answer)。但是,在编译使用F#类型提供程序的代码时,生成的程序集不会在运行时发出任何代码。
我认为Freebase type provider(在FSharpX中可用)是在便携模式下工作的提供程序的示例。我怀疑这部分技巧的一部分是将提供程序拆分为两个程序集 - 一个包含运行时所需的代码,另一个包含设计时组件(构建它们)类型信息,虽然它们也不需要发射)。请参阅FreebaseRuntime.fs中的TypeProviderAssembly
属性。
答案 1 :(得分:0)
XmlProvider from FSharp.Data适用于可移植库