Я работаю с решением WEB API, в котором есть несколько проектов, и проекты используют разные пакеты и версии в зависимости от их назначения. Для иллюстрации проблемы мы рассмотрим 3 проекта
- API (имеет ссылки на оба проекта ниже, имел Newtonsoft. Json версия 6.0.4), и он установлен как проект StartUp
- Модели (не было пакетов)
- Core (имел Newtonsoft. Json версия 10)
Проблема возникла, когда я добавил Newtonsoft. Json версия пакета 10 к проекту Models . Во время выполнения я начал получать сообщение об ошибке: Не удалось загрузить файл или сборку 'Newtonsoft. Json, Версия = 10.0.0.0 ....
WRN: Comparing the assembly name resulted in the mismatch: Major Version
Итак, я проверил .config и .csproj проекта Models, где я добавил новый пакет, и у них были ссылки на версию 10, а <HintPath>
также указывал на версию 10 пакета Newtonsoft. Json.
Проект API: <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
.
Модели: <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
Ядро: <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
Мой вопрос, почему он выдает мне эту ошибку, когда каждый проект имеет перенаправление на свою версию пакета? Чтобы еще больше сбить с толку, проект Core использует версию 10 Newtonsoft. Json пакет без проблем в течение нескольких месяцев, и я проверил его конфигурацию и .csproj, и он имел те же строки относительно пакета Newtonsoft, что и проект Models ...
Так почему же перенаправления работают для проекта Core, а не для проект Models?
Я пытался переустановить р ackage, перестройка, ручное добавление ссылки на пакет, проверка пространств имен в теге и другие вещи, которые я читал в сообщениях stackoverflow, но я не смог найти причину проблемы.