Метод не найден: "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" → "Общие" → "Очистить кэш пакетов", а затем восстановление пакетов