我正在开发一个Windows 8应用程序,想要包含一个ISO-4217代码列表,我已经将其以XML格式更新完毕。显然,每个国家都有几个这样的代码。我认为类型提供程序是非常适合的解决方案。但是,由于它们会发出代码,所以我无法在可移植库中使用它们。如何编译类型提供程序,以便不使用emit,以使用我得到的XML?
我没有创建可从便携式库中使用的类型提供程序的经验,但您似乎假定类型提供程序在运行时发出代码。实际上并非如此,因此在便携式设置中使用它们可能更容易。类型提供程序在运行F#编译器时执行。此时,它可以生成某些类型,尽管只有一种类型的提供程序才会这样做(有两种不同的类型,请参见此SO答案)。但是,当您编译使用F#类型提供程序的代码时,生成的程序集不会在运行时发出任何代码。 我认为Freebase类型提供程序(在FSharpX中可用)是一个在便携模式下工作的提供程序的例子。 我怀疑其中的诀窍之一是将提供程序分成两个程序集 - 一个包含运行时所需的代码,另一个包含设计时组件(构建类型信息,虽然它们也不需要发出)。请参见FreebaseRuntime.fs中的TypeProviderAssembly属性。