Не удалось загрузить файл или сборку "Newtonsoft.Json" или одну из его зависимостей. Определение манифеста не соответствует ссылке на сборку

Вещи, которые я пробовал после поиска:

  1. в Web.Config ставим привязку к старой версии:

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
    
  2. Отредактируйте мой файл.csproj, чтобы убедиться, что есть только одна ссылка Newtonsoft

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
    
  3. Найдите на моем компьютере все файлы Newtonsoft.Json.dll, удалите все версии, кроме 6.0.1, и удалите содержимое моей временной папки.

  4. Восстановить/переустановить пакет в консоли диспетчера nuget

Он успешно строится, но получает ошибку при переходе на сайт.

РЕДАКТИРОВАТЬ

Хорошо, тогда я попытался переустановить, как и каждый пакет nuget, и, кажется, добавил обратно версию 4.5 newtonsoft.json.dll, но я получаю ту же ошибку. Мой проект Target freamework - это.NET 4.5.1, и вот трассировка стека, которую я сейчас получаю:

Ошибка сервера в приложении '/'

Не удалось загрузить файл или сборку 'Newtonsoft.Json' или одну из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.IO.FileLoadException: Не удалось загрузить файл или сборку 'Newtonsoft.Json' или одну из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Ошибка источника:

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информация о происхождении и местоположении исключения может быть идентифицирована с помощью трассировки стека исключений ниже.

Отслеживание загрузки сборки: следующая информация может быть полезна для определения, почему сборка 'Newtonsoft.Json' не может быть загружена.

=== Информация о состоянии предварительной привязки === LOG: DisplayName = Newtonsoft.Json(Partial) WRN: Для сборки была предоставлена информация о частичной привязке: WRN: Имя сборки: Newtonsoft.Json | Идентификатор домена: 2 WRN: частичное связывание происходит, когда указана только часть отображаемого имени сборки. WRN: Это может привести к загрузке подшивки неверной сборки. WRN: рекомендуется предоставить полностью определенную текстовую идентификацию для сборки, WRN: которая состоит из простого имени, версии, культуры и токена открытого ключа. WRN: см. Официальный документ http://go.microsoft.com/fwlink/?LinkId=109270 для получения дополнительной информации и общих решений этой проблемы. LOG: Appbase = file:///c: /users/user/documents/visual studio 2013/Projects/foo/bar/LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin Вызывающая сборка: (Неизвестно). === LOG: эта привязка начинается в контексте загрузки по умолчанию. LOG: Использование файла конфигурации приложения: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config LOG: Использование файла конфигурации хоста: C:\Users\user\Documents\IISExpress\config\aspnet.config LOG: использование файла конфигурации компьютера из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: политика, не применяемая в настоящее время для ссылки (частная, пользовательская, частичная или привязка сборки на основе местоположения). LOG: Попытка загрузки нового файла URL:///C: /Users/user/AppData/Local/Temp/1/Временные файлы ASP.NET/root/48686d37/9d7a6572/Newtonsoft.Json.DLL. LOG: Попытка загрузки нового файла URL:///C: /Users/user/AppData/Local/Temp/1/Временные файлы ASP.NET/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL. LOG: Попытка загрузки нового файла URL:///c: /users/user/documents/visual studio 2013/Проекты/foo/bar/bin/Newtonsoft.Json.DLL. LOG: Использование файла конфигурации приложения: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config LOG: Использование файла конфигурации хоста: C:\Users\user\Documents\IISExpress\config\aspnet.config LOG: использование файла конфигурации компьютера из C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: в файле конфигурации приложения найдено перенаправление: 4.5.0.0 перенаправлено на 6.0.1.0. LOG: ссылка после политики: Newtonsoft.Json, версия = 6.0.1.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed LOG: попытка загрузки нового файла URL:///C: /Users/user/AppData/Local/Temp/1/Временные файлы ASP.NET/root/48686d37/9d7a6572/Newtonsoft.Json.DLL. LOG: Попытка загрузки нового файла URL:///C: /Users/user/AppData/Local/Temp/1/Временные файлы ASP.NET/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL. LOG: Попытка загрузки нового файла URL:///c: /users/user/documents/visual studio 2013/Проекты/foo/bar/bin/Newtonsoft.Json.DLL. WRN: сравнение имени сборки привело к несоответствию: Major Version ERR: Не удалось завершить настройку сборки (hr = 0x80131040). Зондирование прекращено.

Трассировки стека:

[FileLoadException: не удалось загрузить файл или сборку 'Newtonsoft.Json' или одну из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)]

[FileLoadException: не удалось загрузить файл или сборку 'Newtonsoft.Json, версия = 6.0.1.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' или одна из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)] System.Reflection.RuntimeAssembly._nLoad (имя_файла AssemblyName, строковое codeBase, свидетельство AssemblySecurity, расположение RuntimeAssemblyHint, указатель StackCrawlMark & stackMark, исключение указателя на случайное место нахождения на диске. RuntimeAssembly.nLoad(AssemblyName имя_файла, строка CodeBase, фактические данные assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, булева throwOnFileNotFound, булева forIntrospection, Boolean suppressSecurityChecks) +34 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Доказательства assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, логическое значение throwOnFileNotFound, логическое значение forIntrospection, логическое значение suppressSecurityChecks) +152 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Stacking assemblyCecurity & stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77 System.Reflection.RuntimeAssembly.InternalLoad (Строка assemblyString, Доказательство assemblySecurity, StackCrawlMark & stackMark, Булево дляIntrospection) +16 Сборка системы..Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: не удалось загрузить файл или сборку 'Newtonsoft.Json, версия = 6.0.1.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' или одна из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppil.System.Construction.Convice.Convice.Convice.Construction.Convice.Convice.Web.Web.Web.Windows.Web.Windows.Windows(AssemblyInfo ai) +130 System.Web.Compilation.BuildManager. Boolean & isRefAssemblyLoaded) +28 5 System.Web.Compilation.BuildManager.ExecutePreAppStart() +153 System.Web.Hosting.HostingEnvironment. CN014]

[HttpException (0x80004005): не удалось загрузить файл или сборку 'Newtonsoft.Json, версия = 6.0.1.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' или одна из ее зависимостей. Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)] System.Web.HttpRuntime.FirstRequestInit (контекст HttpContext) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit (контекст HttpContext) +101 context.WWTWRecTyPlayer_ReaderSigner +254

Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; ASP.NET версия: 4.0.30319.18408

Ответ 1

Хорошо, я думаю, теперь у меня это получилось. Я удалил каждую версию Newtonsoft.Json.dll на моей машине, которая не была последней версией, которую я смог найти, удостоверился, что у меня была последняя версия в NuGet, и создала ее и удостоверилась, что она была последней в папке bin, и Я оставил изменения в файле web.config и .csproj. Теперь я перехожу к другой ошибке, поэтому она должна работать.

Ответ 2

Чтобы решить эту проблему, я гарантировал, что все мои проекты использовали одну и ту же версию, выполнив следующую команду и проверив результаты:

update-package Newtonsoft.Json -reinstall

И, наконец, я удалил из моего 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>

Если вы хотите, чтобы все ваши пакеты Newtonsoft.Json были той же версией, вы можете указать версию следующим образом:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

Ответ 3

Я использую Newtonsoft.Json v6.0.3, но это то, что я должен был сделать в моем файле Web.config:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Обратите внимание, что хотя я использую 6.0.3, мне пришлось вставить newVersion="6.0.0.0"

В моем файле package.config у меня есть:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

Ответ 4

Я попробовал следующее, уже убедившись, что мой компьютер имеет ту же версию во всех местах и ​​что мои проекты все указывают на один и тот же путь ссылки. Я также удостоверился, что привязка старой версии была и связана с текущей версией dll, которая у меня была.

Я работаю в среде со строгой структурой, и команда фреймворка часто нарушает управление версиями с помощью разных dll.

Как я исправил эту проблему, я должен был запустить консоль менеджера пакетов в visual studio (2013). Оттуда я выполнил следующую команду:

update-package Newtonsoft.Json -reinstall

за которым следует

update-package Newtonsoft.Json

Прошли и обновили все мои файлы конфигурации и соответствующие файлы проектов. Принуждение всех их к той же версии dll. Первоначально версия 4.5 была обновлена, чтобы получить последнюю версию.

Ответ 5

У меня было то же сообщение об ошибке, и, как вы уже упоминали, это связано с тем, что ссылки на другие версии Newtonsoft.Json.dll указаны.

Некоторые проекты в моем решении MVC использовали пакет NuGet для версии 4 этой DLL.

Затем я добавил пакет NuGet (для Salesforce в моем случае), который принес Newtonsoft.Json версии 6 с ним как зависимость от одного из проектов. Вот что вызвало эту проблему для меня.

Чтобы очистить вещи, я использовал раздел "Обновления" в диспетчере пакетов NuGet для решения (отключить меню "Сервис" или "щелкните правой кнопкой мыши" ), чтобы обновить пакет Json.Net во всем решении, чтобы он был той же версией для всех проектов.

После этого я только что проверил файлы конфигурации приложения, чтобы гарантировать, что строки привязки перенаправления перейдут на мою выбранную версию, как показано ниже.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

Ответ 6

Я пробовал шаги Олега, и они работали для моей же ситуации.

Шаги:

  • Запустите update-package Newtonsoft.Json -reinstall в диспетчере пакетов.

  • Удалите bin, включив просмотр скрытых файлов и удаление папки bin.

  • Закройте свою Visual Studio и откройте ее.

  • Теперь запустите проект снова. Я считаю, что это должно быть хорошо!

Ответ 7

Прокомментировав эту часть моей 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>

Но, конечно, вам нужно убедиться, что вы обновили или у вас есть правильная версия, выполнив это в консоли менеджера пакетов:

update-package Newtonsoft.Json -reinstall

Ответ 8

Вы можете решить проблему, добавив ниже строки в файл web.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-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Ответ 9

В моем случае это было просто вопрос:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

Проблема была вызвана, когда я переназначил папку TFS.

Ответ 10

Что на самом деле помогло мне отключить Resharper build и использовать параметр VisualStudio Re-Build в моем проекте.

Ответ 11

если вы работаете с каким-то подрывным действием: удалите проект и перезагрузите его, это сработало для меня: S

Ответ 12

Я не знаю почему, но в моем случае, даже если я удаляю папку bin из проекта, когда я создаю проект, он копирует старую версию newtonsoft.json, я скопировал новую версию dll из папки пакетов и теперь решает.

Ответ 13

У меня была такая же проблема в тестовом проекте, который ссылался на проект MVC 5. Это произошло после того, как я объединился с проектом MVC 5. Я исправил это, установив обновления Visual Studio 2012, как описано здесь в ответе Андре.

  • В своей визуальной студии перейдите к
    • Инструменты > Расширения и обновления
    • Выберите "Обновления" в списке аккордеона слева.
    • Выберите "Обновления продукта".
    • Обновить до последней версии

Ответ 14

Ни один из ответов, в том числе проверенный, не работал у меня.

Решение было намного проще. Сначала я удалил ссылки со своего уровня BUS. Затем удалил dll из проекта (чтобы убедиться, что он ушел), а затем переустановил JSON.NET из nuget packeges. И сложная роль заключалась в том, чтобы "выключить и снова включить".

Я только что перезапустил визуальную студию, и там она сработала!

Итак, если вы попробуете все возможное и все еще не можете решить проблему, просто попробуйте выключить и снова включить визуальную студию, это может помочь.

Ответ 15

Если ничего из этого не работает, проверьте этот ответ:

fooobar.com/questions/25420/...

( TL; DR: удалите пространство имен xml из тега configuration в вашем файле конфигурации. В противном случае переадресация связывания будет проигнорирована)

Ответ 16

В некоторых случаях, если вы удалите папки Bin и Obj, эта проблема будет решена.

Ответ 17

Я разрешил его, удалив нижнюю версию Newtonsoft.json.dll в папке bin и добавив Newtonsoft.json.dll V6.0.0.0 и удалив следующие элементы web.config.

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

Ответ 18

Я получил ту же проблему с ядром dotnet и сумел ее исправить, очистив кеш NuGet.

Откройте PowerShell и введите следующую команду.

dotnet nuget locals all --clear

Затем я закрыл Visual Studio, открыл его снова и ввел следующую команду в консоль диспетчера пакетов:

Update-Package

NuGet теперь должен восстановить все пакеты и снова заполнить кеш Nuget.

После этого я смог собрать и запустить свое ядро dotnet webapi в контейнере Linux.

Ответ 19

из Tools >> NuGet Package Manager >> Управление пакетом для обновления решения Newtonsoft.Json всех решений до последней версии

Ответ 20

Простые шаги. (1) Запустите "пакет обновления Newtonsoft.Json -reinstall" в диспетчере пакетов.

(2) Удалите ячейку, включив просмотр скрытых файлов и удаление папки bin.

(3) Закройте свою визуальную студию и откройте ее.

(4) Теперь запустите проект снова. Я считаю, что это должно быть нормально

Ответ 21

Я ударил эту проблему, потому что у меня: проект A (рабочий стол .exe) ссылался на проект B (переносная DLL). A и B имели разные версии JSON.Net, и поэтому возник конфликт с загрузчиком. Как только я сделал все версии JSON.net тем же, он сработал. (Это фактически то, что делают некоторые из вышеперечисленных решений - я просто вызываю, почему это работает)

Ответ 22

Я боролся с этим недавно с более старым проектом.

Мне удалось выявить проблему после проверки версии dll, которая действительно была в папке bin.

У меня была post-build script, которая скопировала зависимые сборки из библиотеки библиотеки dll в папку bin. Обычная настройка с дней до nuget.

Поэтому каждый раз, когда я строил пост-сборку script, вместо старой версии Json.net была заменена более старая версия

Ответ 23

У меня была точно такая же проблема, и для библиотеки Visual Studio 13 по умолчанию для меня было 4,5, поэтому у меня есть 2 решения, которые извлекают ссылку на это в файле webconfig. Это последнее средство, и оно действительно работает.

Сообщение об ошибке указывает на наличие проблемы в этом месте /Projects/foo/bar/bin/Newtonsoft.Json.DLL. где находится DLL! Базовая проверка свойства показала мне, что она была 4.5.0.0 или аналогичной, поэтому я изменил webconfig, чтобы посмотреть upto 4.5 и использовать 4.5.

                  

Ответ 24

Ни один из этих параметров не работал у меня, в конце концов это было;

Тест > Настройки тестирования > *.testrunconfig

Мне пришлось добавить новую строку

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

Убедитесь, что путь и версия верны для вашей установки.

Ответ 25

В моем случае я просто забыл обновить развертывание web.config после обновления nuget.

Ответ 26

У меня была такая же проблема. Я создал проект web api, а затем обновил его с .net 4.5.1 до .net 4.6.1. Закрытие IDE, остановка IIS и удаление содержимого C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\dir исправили проблему.

НТН

Ответ 27

Установите ту же версию Newtonsoft.Json во все ваши проекты, даже если они не используют ее.

Ответ 28

Эта проблема не была решена для меня, обновив пакеты NuGet или выполнив "Очистить" проект. Он был решен путем очистки папки "obj" вручную.

Ответ 29

Вот мое решение этой проблемы, убедитесь, что номер версии в appconfig или packageconfig аналогичен ссылочной версии в ваших ссылках. См. здесь

Ответ 30

В моем случае в сообщении об ошибке была " версия 6.0.0 ", но эта версия недоступна для установки, поэтому я установил " версию 6.0.1 " в моем проекте и решил мою проблему.

install-package Newtonsoft.Json -Version 6.0.1 -Project MyProjectX