F#类型提供程序与可移植库

4
我正在开发一个Windows 8应用程序,想要包含一个ISO-4217代码列表,我已经将其以XML格式更新完毕。显然,每个国家都有几个这样的代码。我认为类型提供程序是非常适合的解决方案。但是,由于它们会发出代码,所以我无法在可移植库中使用它们。如何编译类型提供程序,以便不使用emit,以使用我得到的XML
2个回答

3
我没有创建可从便携式库中使用的类型提供程序的经验,但您似乎假定类型提供程序在运行时发出代码。实际上并非如此,因此在便携式设置中使用它们可能更容易。
类型提供程序在运行F#编译器时执行。此时,它可以生成某些类型,尽管只有一种类型的提供程序才会这样做(有两种不同的类型,请参见此SO答案)。但是,当您编译使用F#类型提供程序的代码时,生成的程序集不会在运行时发出任何代码。

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


好的,这很棒,它是可能的,但是如何完成它 - 我对创建类型提供程序没有兴趣,但认为XML将是现有提供程序的明显目标。 - Henrik
@Henrik - 这里有一个针对 XML 文档的类型提供程序(https://nuget.org/packages/FSharpx.TypeProviders.Documents)。不确定它是否适用于可移植库,但值得一试。 - Joel Mueller

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接