Поставщик типов ProviderImplementation.JsonProvider сообщил об ошибке, несмотря на работу программы - PullRequest
0 голосов
/ 29 ноября 2018

Я пишу сервис, используя .net Core с Visual Studio 2017. Я хочу использовать JSON для конфигурации, поэтому я определил свой тип следующим образом:

type ServiceConfig = JsonProvider<"exampleConfig.json", EmbeddedResource="MyService, exampleConfig.json", SampleIsList = true>

В своей программе я загружаю егокак это:

let conf = ServiceConfig.Load "config.json"

Когда я запускаю его, он работает нормально, но в VS 2017 я получаю красную волнистую линию и журнал ошибок говорит:

FS3033 Поставщик типа'ProviderImplementation.JsonProvider' сообщил об ошибке в контексте предоставленного типа 'FSharp.Data.JsonProvider, Sample = "exampleConfig.json", SampleIsList = "True", EmbeddedResource = "MyService, exampleConfig.json" ", член" Load ",Ошибка: метод 'FSharp.Data.Runtime.BaseTypes.IJsonDocument Create (System.IO.TextReader, System.String)' не найден в типе ''.Этот метод может отсутствовать в типах, доступных в целевых сборках.

Как мне избавиться от этого?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Случайно я нашел ответ сам.Должно быть, какой-то индекс Visual Studio вышел из строя.У меня была другая проблема с другим проектом в моем решении, поэтому я просто выполнил «аварийный коммит» для git, очистил свою локальную рабочую копию, используя git clean -fdx, а затем перезагрузил решение, перестроил все, и ошибки исчезли.

0 голосов
/ 30 ноября 2018

Я не уверен, что это проблема, но это может помочь указать абсолютный путь к файлу примера.Разрешение относительного пути является постоянным источником проблем в поставщиках типов.Вы можете сделать что-то вроде:

[<Literal>]
let sample = __SOURCE_DIRECTORY__ + "/exampleConfig.json"
type ServiceConfig = 
    JsonProvider< sample, EmbeddedResource="MyService, e
                  xampleConfig.json", SampleIsList = true >
...