Поставщики типов F# с переносимой библиотекой

Я создаю приложение для Windows 8 и обнаружил, что хочу включить список ISO-4217. коды, которые у меня есть в актуальном виде в формате XML.

Естественно, есть парочка этих кодов для всех стран. Я подумал, что Type Provider отлично подойдет. Однако, поскольку они испускают код, я не могу использовать их с переносимыми библиотеками.

Как мне скомпилировать поставщик типов, чтобы он не использовал emit, чтобы использовать XML I есть?


person Henrik    schedule 03.11.2012    source источник


Ответы (2)


У меня нет опыта создания поставщика типов, который можно было бы использовать из переносимых библиотек, но вы, похоже, предполагаете, что поставщики типов создают код во время выполнения. На самом деле это не так, поэтому использовать их в портативных настройках может быть проще.

Поставщик типов выполняется при запуске компилятора F#. На этом этапе он может генерировать некоторые типы, хотя на самом деле это делает только один тип провайдеров типов (есть два разных типа — см. этот SO answer). Однако при компиляции кода, использующего поставщик типа F#, результирующая сборка не создает никакого кода во время выполнения.

Я думаю, что поставщик типов Freebase (доступный в FSharpX) является примером провайдер, работающий в Portable режиме. Я подозреваю, что часть трюка заключается в разделении провайдера на две сборки: одна содержит код, необходимый во время выполнения, а другая содержит компоненты времени разработки (которые создают информацию о типе, хотя им тоже не нужно излучать). См. атрибут TypeProviderAssembly в FreebaseRuntime.fs.

person Tomas Petricek    schedule 04.11.2012
comment
ОК, здорово, что это возможно, но как это делается - я не заинтересован в создании провайдера типов, но подумал, что XML будет очевидной целью для существующего провайдера. - person Henrik; 08.11.2012
comment
@Henrik — вот поставщик типов для XML-документов. Не уверен, что это работает в портативной библиотеке, но попробовать стоит. - person Joel Mueller; 08.11.2012

XmlProvider из FSharp.Data работает с переносимыми библиотеками

person Gustavo Guerra    schedule 13.03.2014