Ошибка получения недостающего метода в FSharp.Data - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь использовать JsonProvider в FSharp.Data, и во время выполнения я получаю следующее:

  • $ exception {"Метод не найден: 'Microsoft.FSharp.Control.FSharpAsync`1FSharp.Data.Runtime.IO.asyncReadTextAtRuntimeWithDesignTimeRules (System.String, System.String, System.String, System.String, System.String) '. "} System.MissingMethodException ClassName пустая строка
  • Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal} HResult -2146233069 int HelpLink пустая строка
  • InnerException пустое System.Exception MemberName пустая строка Сообщение "Метод не найден:" Microsoft.FSharp.Control.FSharpAsync`1 FSharp.Data.Runtime.IO.asyncReadTextAtRuntimeWithDesignTimeRules (System.String, System.String, System.String, System.String, System.String) '. "string Подпись null byte [] Источник «OnLineDataAccess» Строка StackTrace "в OnLineDataAccess.TheMovieDatabase.GetSonyPicturesClassics () \ r \ n в Film_Data_Exploration.MvcApplication.Application_Start () в E: \ Исследование данных фильма \ Исследование данных фильма \ Исследование глобальных данных \ Film Data.asax.cs: строка 24 "строка
  • TargetSite {FSharp.Data.Runtime.BaseTypes.IJsonDocument GetSonyPicturesClassics ()} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}
  • Статические члены
  • Непубличные члены

Я могу заставить его уйти, переключившись на более раннюю версию FSharp, Data, но затем я сталкиваюсь с другими проблемами (в частности, с HtmlDocumnent.Elements.не работает должным образом).Поэтому я подумал, может быть, если я переключусь с Visual Studio 15 на Visual Studio 17, это может решить проблему, но это не так.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 05 февраля 2019

Я получил ту же ошибку с той же трассировкой стека, пытаясь использовать FSharp.Data в LINQPad. Я исправил это, установив пакет NuGet для FSharp.Core версии 4.6.0.0 , а не для LINQPad по умолчанию 4.4.0.0. Имеет смысл, что более поздняя версия FSharp.Data будет зависеть от чего-то в более новой версии FSharp.Core. Я не уверен, откуда моя установка LINQPad получала такую ​​древнюю версию.

Существует руководство, которое рекомендует всегда явно ссылаться на пакет для нужной версии FSharp.Core:

Всегда ссылаться на FSharp.Core через пакет NuGet

FSharp.Core теперь всегда указывается через пакет NuGet .

В некоторых шаблонах для библиотек F # используется неявный пакет FSharp.Core ссылка, где .NET SDK выбирает один, например, такие вещи . Вы обычно следует использовать явную ссылку, особенно при создании библиотеки.

Если вы используете файл проекта старого стиля, см. Информацию далее ниже.

При использовании файлов проекта .NET SDK нового стиля используйте:

<PackageReference Update="FSharp.Core" Version="4.5.0" />

Другие заголовки из этого руководства включают:

  • Не связывайте FSharp.Core с библиотекой
  • Всегда развертывать FSharp.Core как часть скомпилированного приложения
  • Всегда ссылаться на FSharp.Core через пакет NuGet
  • Сделайте ваши ссылки FSharp.Core явными
  • Библиотеки должны предназначаться для более низких версий FSharp.Core
  • Приложения должны быть нацелены на более высокие версии FSharp.Core
  • Не предполагайте, что FSharp.Core находится в GAC
...