#.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. Спасибо, что указали альтернативный способ.