Метод не найден: "Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute (Boolean)" (webapi и PCL)

Как и этот вопрос, который был помечен как дубликат (поэтому я не мог ответить на него напрямую).

У меня есть проект webapi, который ссылается на проект PCL. Я получал эту ошибку DefaultContractResolver с перерывами.

Я пробовал все шаги по устранению неполадок из этого другого вопроса, в основном связанные с деинсталляцией и переустановкой пакетов nuget. Не помогло.

Ответ 1

Основной причиной проблемы для меня было то, что и мой проект webapi, и мой проект PCL ссылались на Newtonsoft.Json.dll. Казалось, что в сборке Visual Studio есть какое-то условие гонки, поэтому, если проект PCL был построен последним, он скопировал бы переносимую версию Newtonsoft.Json.dll в мой проект webapi project\bin.

Решение состояло в том, чтобы просто войти в мои ссылки на проект PCL и отключить "Копировать локальную" для Newtonsoft.Json.dll

Ответ 2

Две другие вещи, которые могут помочь:

  • Удаление временных файлов ASP.NET(см. "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files" ), содержащих старые версии dll NewtonSoft.
  • Удаление папки пакета NuGet, очистка кеша пакета NuGet ( "Управление пакетами NuGet" → "Настройки" → "Менеджер пакетов NuGet" → "Общие" → "Очистить кэш пакетов", а затем восстановление пакетов