Ошибка при использовании поставщика типов ‘FSharp.Configuration.Поставщик ресурсов’

#.net #f# #resx #type-providers

Вопрос:

Я просто загрузил FSharp.Configuration файлы пакета и создал тип с

 open FSharp.Configuration
type ResourceProvider = ResXProvider<file="Resources/Strings.resx">
 

В Strings.resx являются ли ресурсы, например,:

 <data name="Greeting" xml:space="preserve">
    <value>Hello</value>
</data>
 

Все компилируется.
Но когда я вызываю этот ресурс через провайдера, ResourceProvider.Greeting я получаю эту ошибку:

 error FS3033: The type provider 'FSharp.Configuration.ConfigTypeProvider FSharpConfigurationProvider' 
reported an error in the context of provided type: 
'FSharp.Configuration.ResXProvider,file="Resources/Strings.resx"', member 'get_Greeting'. 
Error: Method 'System.Object readValue[Object](System.String, System.Reflection.Assembly,
 System.String)' not found in type '<null>'. This method may be missing in the types 
available in the target assemblies.
 

Кто-нибудь может помочь мне с этим сообщением об ошибке? Я не нашел решения для этого сообщения.

Спасибо.

Правка: это проект .NET 6.

Комментарии:

1. Я получаю то же самое и пытаюсь понять, почему.

Ответ №1:

После просмотра репозитория GitHub я думаю, что проблема в том, что ResXProvider еще не поддерживает .NET 5 (не говоря уже о .NET 6). Тестовый файл ResXProvider содержит директиву компилятора, которая ограничивает его .NET 4.6.1, и существует открытая проблема, связанная с отсутствием поддержки .NET Core.

В качестве альтернативы я предлагаю использовать Assembly.GetManifestResourceStream вместо этого.

Комментарии:

1. Да, я пришел к тому же результату. Я тоже видел директиву компилятора. Я читал, что этот поставщик типов немного сложнее перенести в .NET. Спасибо, что указали альтернативный способ.