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

216

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

  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, но я получаю ту же ошибку. Целевая бесплатная работа моего проекта - .NET 4.5.1, и вот трассировка стека, которую я сейчас получаю:

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

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

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

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

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

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

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

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
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
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

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

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408
noobieDev
источник
2
Хорошо, я думаю, что получил его на работу сейчас. Я удалил на своем компьютере все файлы Newtonsoft.Json.dll, которые не были последней найденной версией, убедился, что у меня установлена ​​последняя версия в NuGet, и собрал ее и убедился, что она самая последняя в папке bin, и Я оставил изменения в web.config и .csproj. Теперь я нахожусь на другой ошибке, поэтому она должна работать ...
noobieDev
1
Добавить ответ на свой вопрос, чтобы люди могли видеть, что он решен? И пометьте это как решение
Пер Хорншой-Ширбек
2
У меня есть какая-то версия этой проблемы даже сегодня (01.03.2016) с версией 8.0.2. Он пытается загрузить версию 6.0.0. Нет файлов в моем решении ссылки 6.0.0. Там нет версии 6.0.0. .dll где-нибудь в моей области решения. У меня на компьютере много копий newtonsoft.json.dll разных версий, они используются установленным сторонним программным обеспечением, с которым я не хочу связываться. Помимо удаления всех этих копий, я пробовал каждое решение, упомянутое во всем этом потоке, и ничего не помогло.
Shavais
1
Я также сталкивался с этим сообщением об ошибке newtonsoft-json, когда добавлял ссылку на один проект в другой проект, но .Net Framework в проектах отличался после решения одной и той же .Net Framework для обеих проблем. Но я не смог понять вместо сообщения об ошибке Framework, почему он показывает ошибку, связанную с newtonsoft-json.
Самир
1
Установите одну и ту же версию Newtonsoft.Json во всех ваших проектах, даже если они не используют ее.
rubStackOverflow

Ответы:

274

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

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
user1477388
источник
17
Просто запуск команды переустановки работал для меня. Мне не нужно было изменять web.config.
Кит
4
Мне просто нужно было добавить тег <independentAssembly>, чтобы избавиться от этой ошибки.
Никлас Мёллер Йепсен
3
Я должен был предоставить -version, но опустить флаг -reinstall, чтобы он работал в моем случае.
НАРЭ
1
Я использую последнюю версию 9.0.1, но она показывала ту же ошибку. Затем я проверил версию в файле csproj, и это было 9.0.0.0, добавил, что к моему web.config и проблема была решена. 1. Убедитесь, что версия в csproj такая же, как и в web.config 2. Остерегайтесь номеров версий, они могут сказать x.0.1, когда фактическая версия x.0.0.0, x может быть 6 или 9 или что-то еще ,
Евгений
7
Обратите внимание, что для запуска команды в VS2017, вы можете зайти в Инструменты -> Диспетчер пакетов Nuget -> Консоль диспетчера пакетов
Rose
83

Я использую 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"

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

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
CraigV
источник
1
В качестве заметки я попытался удалить / удалить / удалить все, что смог найти, что связано с Newtonsoft.Json, затем использовал Nuget для его переустановки, но все равно получал сообщение об ошибке выше. Только когда я внес изменения, о которых я упоминал, я смог заставить их работать должным образом.
CraigV
Я столкнулся с этой проблемой и использовал программу просмотра журнала привязок сборки, чтобы помочь диагностировать ее. Связыватель сборок сообщает о v6.0.3 Newtonsoft.Json.dll как v6.0.0.0, поэтому перенаправление не будет выполнено, когда я настрою его как 6.0.3.
Джейсон Слокомб
Линия «Примечание», помогите мне. Первоначально у меня была 9.0.1.19813 как newVersion в bindingRedirect, так как это то, что говорит DLL. Это то, что у меня есть сейчас: <Reference Include = "Newtonsoft.Json, версия = 9.0.0.0, Culture = нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = MSIL"> <SpecificVersion> False </ SpecificVersion> </ Reference> <зависимая сборка> <assemblyIdentity name = "Newtonsoft.Json" culture = "нейтральный" publicKeyToken = "30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </pendentAssembly>
Марк Зеефельдт
62

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

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

Я исправил эту проблему, запустив консоль диспетчера пакетов в Visual Studio (2013). Оттуда я выполнил следующую команду:

update-package Newtonsoft.Json -reinstall

с последующим

update-package Newtonsoft.Json

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

Самуил
источник
Это было обновление, которое решило проблему для меня. Мой проект был обновлен до версии Newtonsoft 7.0.
id.ot
Работал на меня. После этого важно отметить, чтобы убедиться, что ваш файл package.config и web.config имеют совпадающие версии.
TheValyreanGroup
Работал для меня, когда закончил через консоль диспетчера пакетов NuGet, спасибо!
Kbdavis07
25

У меня было то же сообщение об ошибке, и, как вы упомянули, это было связано с ссылками на разные версии 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" />
S__
источник
Что если библиотеки DLL имеют зависимости для разных версий Newtonsoft.Json для одного и того же приложения MVC? Вот где я застрял.
Джереми Рэй Браун
Используйте параметр «Консолидировать» в диспетчере пакетов NuGet, чтобы убедиться, что версии не расходятся.
niico
17

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

noobieDev
источник
2
Как вы нашли все места на вашем компьютере?
обайлись
Я также получил сообщение об ошибке при получении проекта с помощью сервера Team Foundation на мой pc.i добавить ссылку на newtonsoft в мой solution.it не работает. Затем я устанавливаю json.net (newtonsoft.json) через менеджер пакетов nuget. Теперь это так работает нормально.
Мохаммад Садикур Рахман
это находится внутри имени файла папки bin - Newtonsoft.Json.dll Удалите этот файл и переустановите пакет или просто установите более низкую версию и переустановите правильную версию с помощью NuGet-Solution
maddy
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
Вилли Дэвид младший
источник
4

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

шаги:

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

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

  3. Закройте Visual Studio и снова откройте его.

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

Мэтью Кавалло
источник
4

Вы можете решить эту проблему, добавив следующие строки в файл 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>
Джиниш Увантавида
источник
3

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

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

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

daniloquio
источник
3

Что мне действительно помогло, так это отключить сборку Resharper и использовать опцию перестроения VisualStudio в моем проекте.

Shaulian
источник
Как ты это сделал?
Наоми,
1
В опциях Resharper: Инструменты -> ReSharper Build -> Build Engine - выберите «Visual Studio»
Shaulian
Я установил пробную версию некоторое время назад (думаю, около месяца), а затем отключил расширение. Я не вижу это в Инструментах, так что, надеюсь, я в порядке.
Наоми
3

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

Года Котб
источник
2

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

CH2O
источник
Долгий путь, но я должен был сделать это, поскольку никакое другое решение не работало для меня
Майк Резоли
2

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

  • В вашей визуальной студии перейдите на
    1. Инструменты> Расширения и обновления
    2. Выберите «Обновления» в списке аккордеона слева.
    3. Выберите «Обновления продукта».
    4. Обновление до последней версии
Майкл Касса
источник
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы,
содержащие
Моя проблема была исправлена ​​с помощью этого решения, спасибо! У меня была установлена ​​версия 8.0.1, и она не работала, пока я не обновился до VS2013 update 5
Devin Prejean
2

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

Месут
источник
У меня была похожая проблема. В моем решении у меня есть тестовый проект. Тестовый проект получал версию 9 в бункере, но у тестируемого проекта была версия 12. Я скопировал версию 12 из проекта в папке bin теста в папку bin теста.
Джош Джей
2

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

Иван Руски
источник
2

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

Если вы получаете это в 2019 году, используя .NET Core 3.0 (предварительный просмотр в настоящее время), решение состоит в том, чтобы гарантировать, что все проекты ориентированы на одну и ту же версию .NET Core (в моем случае 3.0). Я думаю, что у меня был один проект в решении, нацеленный на 2.1, а остальные были на 2.2, так что я, вероятно, мог бы остаться с 2.2 ...

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

Если у вас есть библиотеки классов .NET Standard или ж / д в вашем решении, они не обязательно должны быть в одной и той же версии, хотя, вероятно, они должны быть самыми последними, которые вы можете использовать. Например, мои библиотеки классов .NET Standard находятся на версии 2.2, поскольку еще не существует .NET Standard 3.0.

jspinella
источник
1

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

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

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

Так что, если вы попробуете все возможное и по-прежнему не сможете решить проблему, попробуйте выключить и снова включить Visual Studio, это может помочь.

Зафер Серникли
источник
2
Я думаю, что Simple был сарказмом.
Достойно7
1

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

https://stackoverflow.com/a/12011221/150370

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

Немецкий латорре
источник
1

Я решил это, удалив более низкую версию 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>
Алок Кумар
источник
1

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

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

dotnet nuget locals all --clear

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

Update-Package

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

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

datoml
источник
1

решение, которое решило мою проблему для этого

перейдите по ссылке-> щелкните правой кнопкой мыши Newtonsoft.json - перейдите в свойства и проверьте версию

эта же версия должна быть в

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>
Эрман Имран Шейх
источник
1

После нескольких часов борьбы с этим ... я сделал следующее:

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-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

Ключ для ввода правильного номера newVersion и oldVersion - открыть проект References найти пакет, перейти к его свойствам или нажатьalt + enter

Вы найдете раздел, Versionкоторый в моем случае был на 12.0.0.0самом деле 12.0.3при изучении с Manage NuGet.

Так что вам нужно выбрать версию пакета из справочных свойств (в моем случае 12.0.0.0)

Наконец, cleanи rebuildпроект (вы можете удалить binи objпапку перед).

Вы можете столкнуться с другими проблемами с пакетами, я сделал это для всех, и они сработали.

Али Клейт
источник
0

Простые шаги. (1) Запустите «update-package Newtonsoft.Json -reinstall» в менеджере пакетов.

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

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

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

Одейинка Олубунми
источник
0

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

Майк С
источник
0

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

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

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

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

Фредрик Столпе
источник
0

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

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

Mcole1976
источник
0

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

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

Я должен был добавить новую строку

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

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

Даниэль Хаселден
источник
0

Я была такая же проблема. Я создал проект 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 устранили проблему.

НТН

CaffeineDrivenDevelopment
источник
0

Для меня эта проблема не была решена путем обновления пакетов NuGet или выполнения «Очистки» проекта. Это было решено путем очистки папки «obj» вручную.

Александр П. Браун
источник
0

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


источник