Ошибка метода не найдена в приложении ASP.NET Core с Json.NET/NEST/Elasticsearch - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть два проекта в одном решении, Проект 1 и Проект 2.

Проект 1. Целевой платформой является .NET Core 2.1. Это проект MVC с контроллерами и представлениями. Он имеет ссылку на Project 2. Пакеты Nuget включают в себя:

  • Microsoft.AspNetCore.App
  • Microsoft.NETCore.App

Проект 2. Целевой платформой является .NET Framework 4.6.1. Это библиотека классов, которая получает данные, используя NEST / ElasticSearch. У меня не хватает времени, поэтому я копирую этот проект из проекта .NET Framework 4.5.1, который работает просто отлично. Пакеты Nuget включают в себя:

  • NEST 1.7.1

  • ElasticSearch.Net 1.7.1

  • Newtonsoft.Json 7.0.1

  • Microsoft.AspNet.WebApi.Client 5.2.3

Ошибка в проекте 2:

enter image description here

Я не уверен, почему я получаю эту ошибку, если я использую тот же код, что и в старом проекте 4.5.1. Единственное реальное отличие состоит в том, что он теперь в том же решении, что и проект .NET Core 2.1.

Вещи, которые я рассмотрел:

  • Я попытался обновить старый проект с .NET Framework 4.5.1 до .NET Рамочная 4.6.1. и он все еще работает нормально, так что я не думаю, что это связано с этим.
  • Я догадываюсь, что в проекте ASP.NET Core используется Newtonsoft.Json 10/11, а в проекте .NET Framework 4.6.1 используется Newtonsoft.Json 7.0.1, и это как-то вызывает проблему. Но если это так, каково решение? Обновление Project 2 до Newtonsoft.Json 10/11 также требует, чтобы вы обновили NEST и ElasticSearch.Net, которые вносят массу серьезных изменений. В идеале мне не пришлось бы сильно трогать код в Project 2. Мне бы очень хотелось, чтобы это работало, но оставьте Project 1 в ASP.NET Core 2.1 и не иметь обоих проектов в старой .NET Framework.

1 Ответ

0 голосов
/ 07 сентября 2018

Похоже, ваша догадка верна! У вас небольшой случай DLL HELL

Есть несколько вещей, которые вы можете сделать, и вот статья , которую вы можете выбрать из

Мне лично нравится редактировать файл app.config, поэтому я предлагаю это.

<dependentAssembly>  
  <assemblyIdentity name="YOUR JSON ASSEMBLY HERE"  
    publicKeyToken="32ab4ba45e0a69a1"  
    culture="en-us" />  
  <bindingRedirect oldVersion="0.0.0.0" newVersion="11.0.0.0" />  
</dependentAssembly>
...