Как я могу исправить конфликты версий сборки с JSON.NET после обновления ссылок на пакет NuGet в новом ASP.NET проект MVC 5?
Я создал новый ASP.NET веб-проект MVC 5 в VS 2013 (обновление 1) затем обновил все пакеты NuGet. Когда я строю проект, я получаю следующее предупреждение:
предупреждение MSB3243: нет способа разрешить конфликт между "Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed " и " Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".
когда я проверяю интернет.конфигурации, однако, я вижу, что привязка редиректа на месте:
<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>
Это именно то, что советует предупреждение.
Как я могу исправить это предупреждение?
8 ответов:
здесь шаги, которые я использовал, чтобы исправить предупреждение:
- выгрузить проект в VS
- правка .csproj file
- поиск всех ссылок на Newtonsoft.Сборки в формате JSON
- найдено два, один к v6 и один к v5
- заменить ссылку на v5 на v6
- перезагрузить проект
- сборка и уведомление о сбое ссылки на сборку
- просмотр ссылок и увидеть, что теперь есть два Newtonsoft.формат JSON. Удалите тот, который не удается решить.
- восстановить - нет предупреждения
У меня была эта проблема, потому что я обновил пакеты, которые включали Microsoft.сеть САШ.WebApi, который имеет ссылку на Newtonsoft.Json 4.5.6 и у меня уже была установлена версия 6. Он не был достаточно умен, чтобы использовать версию 6.
чтобы решить эту проблему, после обновления WebApi я открыл инструменты > Диспетчер пакетов NuGet > консоль Pacakge Manager и запустил:
Update-Package Newtonsoft.Jsonжурнал показал, что 6.0.версии x и 4.5.6 были обновлены до последней версии, и все было штраф.
У меня такое чувство, что это снова всплывет.
Я нашел, чтобы удалить этот раздел из файла проекта, чтобы исправить проблему.
<ItemGroup> <Reference Include="Newtonsoft.Json"> <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference>
Если ничего из вышеперечисленного не работает, попробуйте использовать это в интернете.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>
окончательное решение ошибки перенаправления сборки
ладно, надеюсь, это должно помочь решить любой (вменяемые) несоответствия ссылок на сборку ...
- проверяем ошибки.
- Проверьте веб.конфигурация после перенаправления сборки. Создайте его, если он не существует.
- щелкните правой кнопкой мыши на ссылку для сборка и выберите Свойства.
- проверьте версию (не версию среды выполнения) в таблице свойств. Понял.
- вставить в атрибут newVersion.
- для удобства измените последнюю часть oldVersion на что-то высокое, круглое и воображаемый.
радуемся.
помните, что с привязкой перенаправления
oldVersion= "0.0.0.0-6.0.0.0"
вы говорите, что старые версии dll находятся между версией 0.0.0.0 и версией 6.0.0.0.
У меня была аналогичная проблема, и я просто хотел опубликовать ответ для других в моей ситуации.
У меня есть решение под управлением ASP.NET веб-приложение с несколькими другими проектами lib класса C#.
мой ASP.NET веб-приложение не использовало json, но другие проекты где.
вот как я это исправил:
- я убедился, что все проекты, в которых используется последняя версия (6) , используют обновление NuGet для всех проектов, в настоящее время использующих любую версию json-это не исправлена проблема
- я добавил json в веб-приложение с помощью NuGet-это исправило проблему (позвольте мне погрузиться в почему):
Шаг 2 был прежде всего добавление информации о конфигурации для json, которые предполагают, что все проекты, использовать последнюю версию (6) независимо от того, какая версия у них есть. Добавление привязки сборки к Web.Конфигурация, скорее всего, исправление.
однако Шаг 2 также очистил устаревший код som. Оказалось мы раньше пользовались старым версия (5) json в нашем веб-приложении и папках NuGet не была удалена, когда ссылка была (я подозреваю: вручную) удалена. Добавив последний json (6), удалил старые папки (json v5). Это также может быть частью исправления.
я обновил свой пакет и даже переустановил его - но я все еще получал ту же самую ошибку, что и упомянутый OP. Я вручную отредактировал указанную dll, выполнив следующие действия.
Я удалил newtonsoft.формат JSON.DLL из моей ссылки, а затем вручную удалил .dll из bin directoy. Затем я вручную скопировал newtonsoft.формат JSON.dll из папки пакета nuget в корзину проекта, а затем добавил ссылку, просмотрев ее .DLL-файл.
теперь мой проект строит снова.






Comments