Как я могу исправить конфликты версии сборки с JSON.NET после обновления ссылок на пакеты NuGet в новом проекте ASP.NET MVC 5?
Я создал новый веб-проект ASP.NET MVC 5 в VS 2013 (обновление 1), а затем обновил все пакеты NuGet. Когда я создаю проект, я получаю следующее предупреждение:
warning MSB3243: нет способа разрешить конфликт между "Newtonsoft.Json, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" и "Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed".
Однако, когда я проверяю web.config, я вижу, что перенаправление привязки на месте:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
Именно это предупреждение предупреждает.
Как я могу исправить это предупреждение?
Ответы
Ответ 1
Здесь шаги, которые я использовал для исправления предупреждения:
- Выгрузить проект в VS
- Изменить файл .csproj
- Искать все ссылки на сборку Newtonsoft.Json
- Найдено два, от одного до v6 и от одного до v5
- Заменить ссылку на v5 на v6
- Обновить проект
- Сборка и уведомление об ошибке сборки сборки
- Просмотрите ссылки и посмотрите, что в Newtonsoft.Json теперь есть два. Удалите тот, который не может быть разрешен.
- Перестроить - никаких предупреждений
Ответ 2
У меня была эта проблема, потому что я обновил пакеты, в которые включен Microsoft.AspNet.WebApi, который имеет ссылку на Newtonsoft.Json 4.5.6, и у меня уже установлена версия 6. Это не было достаточно умно, чтобы использовать версию 6.
Чтобы решить эту проблему, после обновления WebApi я открыл Диспетчер пакетов > Диспетчер пакетов NuGet > Консоль управления Pacakge и выполнил:
Update-Package Newtonsoft.Json
Журнал показал, что версии 6.0.x и 4.5.6 были обновлены до последней версии, и все было в порядке.
У меня такое чувство, что это снова придет.
Ответ 3
Мне удалось удалить этот раздел из файла проекта, исправить проблему.
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
Ответ 4
Если ни одно из указанных выше не работает, попробуйте использовать это в файле web.config или app.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Ответ 5
Окончательное решение вашей ошибки перенаправления сборки
Хорошо, надеюсь, это должно помочь разрешить любые (нормальные) ссылочные расхождения сборки...
![Surf to the website]()
- Проверьте web.config после перенаправления сборки. Создайте один, если он не существует.
![Существующее перенаправление сборки web.config]()
- Щелкните правой кнопкой мыши ссылку для сборки и выберите "Свойства".
![Сборка в списке ссылок в соответствующем проекте]()
- Проверьте версию (не версию Runtime) в таблице "Свойства". Скопируйте это.
![Таблица свойств, показывающая версию сборки]()
- Вставить в атрибут newVersion.
![перенаправление сборки web.config с обновленной версией newVersion]()
- Для удобства измените последнюю часть oldVersion на что-то высокое, круглое и мнимое.
![перенаправление сборки web.config с обновленным oldVersion]()
Радуйтесь.
Ответ 6
Помните, что с перенаправлением привязки
oldVersion = "0.0.0.0-6.0.0.0"
Вы говорите, что старые версии dll находятся между версией 0.0.0.0 и 6.0.0.0.
Ответ 7
У меня была аналогичная проблема, и я просто хотел опубликовать ответ для других в моей ситуации.
У меня есть решение, использующее веб-приложение ASP.NET с несколькими другими проектами lib класса С#.
В моем веб-приложении ASP.NET не использовался json, а в других проектах, где.
Вот как я его исправил:
- Я убедился, что все проекты, в которых используется последняя версия (6) с использованием NuGet Update для всех проектов, в настоящее время использующих любую версию json, не устранили проблему.
- Я добавил json в веб-приложение с помощью NuGet - это исправило проблему (позвольте мне погрузиться в почему):
Шаг 2 был прежде всего добавлением информации о конфигурации для json, которая предполагает, что все проекты используют последнюю версию (6) независимо от того, какую версию они имеют. Добавление привязки сборки к Web.Config скорее всего является исправлением.
Тем не менее, шаг 2 также очистил старый код som. Оказалось, что мы ранее использовали старую версию (5) json в нашем веб-приложении, а папки NuGet не удалялись при удалении ссылки (я подозреваю: вручную). Добавив последнюю версию json (6), удалили старые папки (json v5). Это также может быть частью исправления.
Ответ 8
Я обновил свой пакет и даже переустановил его, но я все еще получал ту же ошибку, что и OP. Я вручную отредактировал ссылочную dll, выполнив следующие действия.
Я удалил newtonsoft.json.dll из своей справки, а затем вручную удалил .dll из bin directoy. Затем я вручную скопировал файл newtonsoft.json.dll из папки пакета nuget в корзину проекта, а затем добавил ссылку, просмотрев файл .dll.
Теперь мой проект снова строится.
Ответ 9
Никто не упомянул следующее, что в моем понимании является правильным решением:
Перейдите в csproj проекта, в котором установлен AutoGEneratedBindingRedirects
, и установите для AutoGEneratedBindingRedirects
значение false
.
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
Полная статья в MSDN.
Ответ 10
Я обновил с Newtonsoft.Json 11.0.1 до 12.0.2. Открыв файл проекта в Notepad++, я обнаружил оба
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
а также
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
Я удалил ItemGroup, включив ссылку с путем подсказки до версии 11.0.1.
Эти проблемы могут быть безумно разочаровывающими, чтобы найти. Более того, разработчики часто выполняют те же действия, что и предыдущие настройки проекта. Предыдущие установки не сталкивались с проблемой. По какой-то причине файл проекта иногда обновляется неправильно.
Я отчаянно желаю, чтобы Microsoft исправила эти проблемы с адской библиотекой визуальных студий. Это происходит слишком часто и приводит к тому, что прогресс останавливается до тех пор, пока не будет исправлено, часто методом проб и ошибок.