Вещи, которые я пробовал после поиска:
в 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>
Отредактируйте мой файл .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>
Найдите на моем компьютере все файлы Newtonsoft.Json.dll, удалите все версии, кроме 6.0.1, и удалите содержимое моей временной папки.
Восстановить / переустановить пакет в консоли диспетчера 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
источник
Ответы:
Чтобы решить эту проблему, я убедился, что все мои проекты использовали одну и ту же версию, выполнив следующую команду и проверив результаты:
И, наконец, я удалил следующее из моего web.config:
Если вы хотите убедиться, что все ваши пакеты Newtonsoft.Json имеют одинаковую версию, вы можете указать версию следующим образом:
источник
Я использую Newtonsoft.Json v6.0.3, но это то, что я должен был сделать в моем файле Web.config:
Обратите внимание, что хотя я использую 6.0.3, мне пришлось положить в
newVersion="6.0.0.0"
В моем файле packages.config у меня есть:
источник
Я попробовал следующее, уже убедившись, что мой компьютер имеет одинаковую версию во всех местах и что все мои проекты указывают на один и тот же путь ссылки. Я также удостоверился, что привязка старой версии была их и привязана к текущей версии dll, которая была у меня.
Я работаю в среде со строгим фреймворком, и команда фреймворков часто расстраивает управление версиями различными dll.
Я исправил эту проблему, запустив консоль диспетчера пакетов в Visual Studio (2013). Оттуда я выполнил следующую команду:
с последующим
Это прошло и обновило все мои файлы конфигурации и соответствующие файлы проекта. Принуждение их всех к одной и той же версии dll. Который изначально был версии 4.5, прежде чем обновить снова, чтобы получить последнюю версию.
источник
У меня было то же сообщение об ошибке, и, как вы упомянули, это было связано с ссылками на разные версии Newtonsoft.Json.dll.
Некоторые проекты в моем решении MVC использовали пакет NuGet для версии 4 этого dll.
Затем я добавил пакет NuGet (для Salesforce в моем случае), который принес Newtonsoft.Json версии 6 вместе с ним как зависимость от одного из проектов. Это было то, что вызвало проблему для меня.
Чтобы исправить ситуацию, я использовал раздел «Обновления» в диспетчере пакетов NuGet для решения (из меню «Сервис» или «щелчок правой кнопкой мыши»), чтобы обновить пакет Json.Net во всем решении, чтобы он был одинаковой для всех проектов.
После этого я просто проверил файлы конфигурации приложения, чтобы убедиться, что все строки перенаправления привязки переходят к выбранной мной версии, как показано ниже.
источник
Хорошо, я думаю, что получил его на работу сейчас. Я удалил на своем компьютере все файлы Newtonsoft.Json.dll, которые не были последней найденной версией, убедился, что у меня установлена последняя версия в NuGet, и собрал ее и убедился, что она самая последняя в папке bin, и Я оставил изменения в web.config и .csproj. Теперь я нахожусь на другой ошибке, поэтому она должна работать ..
источник
Комментируя это, эта часть моего web.config решила мою проблему:
Но, конечно, вам нужно убедиться, что вы обновили или у вас есть правильная версия, выполнив это в консоли диспетчера пакетов:
источник
Я попробовал шаги Олега, и они сработали для моей ситуации.
шаги:
Запустите
update-package Newtonsoft.Json -reinstall
в диспетчере пакетов.Удалите свой
bin
, включив просмотр скрытых файлов и удалениеbin
папки.Закройте Visual Studio и снова откройте его.
Теперь запустите ваш проект снова. Я считаю, что все должно быть в порядке!
источник
Вы можете решить эту проблему, добавив следующие строки в файл web.config.
источник
В моем случае это был только вопрос:
Проблема была вызвана, когда я переназначил папку TFS.
источник
Что мне действительно помогло, так это отключить сборку Resharper и использовать опцию перестроения VisualStudio в моем проекте.
источник
из Tools >> NuGet Package Manager >> Управление пакетом для обновления решения Newtonsoft.Json всех решений до последней версии
источник
если вы работаете с какой-то подрывной деятельностью: удалите проект и повторно загрузите его, у меня это сработало: S
источник
У меня была та же проблема в тестовом проекте, который имел ссылку на проект MVC 5. Это произошло после того, как я слился с проектом MVC 5. Я исправил это, установив обновления Visual Studio 2012, как описано здесь в ответе Андре.
источник
Я не знаю почему, но в моем случае, даже если я удаляю папку bin из проекта, когда я собираю проект, он копирует старую версию newtonsoft.json, я копировал dll новой версии из папки пакета, и пока это решается.
источник
В некоторых случаях, если вы удалите ваши
Bin
иObj
папки, это решит эту проблему.источник
Хорошо, так что я думаю, что нужно сделать, это добавить мой ответ здесь в этот длинный список вместо создания дублирующего вопроса ...
Если вы получаете это в 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.
источник
Ни один из ответов, включая проверенный, у меня не сработал.
Решение было гораздо более простым. Сначала я удалил ссылки со своего уровня BUS. Затем удалил DLL из проекта (чтобы убедиться, что он пропал), затем переустановил JSON.NET из пакетов nuget. И сложная часть заключалась в том, чтобы «выключить и снова включить».
Я только что перезапустил визуальную студию, и там все заработало!
Так что, если вы попробуете все возможное и по-прежнему не сможете решить проблему, попробуйте выключить и снова включить Visual Studio, это может помочь.
источник
Если ничего из этого не работает, пожалуйста, проверьте этот ответ:
https://stackoverflow.com/a/12011221/150370
( TL; DR : удалить пространство имен xml из
configuration
тега в вашем файле конфигурации. В противном случае связывание перенаправлений будет игнорироваться)источник
Я решил это, удалив более низкую версию Newtonsoft.json.dll в папке bin, добавил Newtonsoft.json.dll V6.0.0.0 и удалил следующие элементы web.config
источник
Я получил ту же проблему с ядром dotnet и сумел ее исправить, очистив кеш NuGet.
Откройте PowerShell и введите следующую команду.
Затем я закрыл Visual Studio, открыл его снова и ввел следующую команду в консоль диспетчера пакетов:
NuGet теперь должен восстановить все пакеты и снова заполнить кеш Nuget.
После этого я смог собрать и запустить свое ядро dotnet webapi в контейнере Linux.
источник
решение, которое решило мою проблему для этого
перейдите по ссылке-> щелкните правой кнопкой мыши Newtonsoft.json - перейдите в свойства и проверьте версию
эта же версия должна быть в
источник
После нескольких часов борьбы с этим ... я сделал следующее:
web.config
Ключ для ввода правильного номера newVersion и oldVersion - открыть проект
References
найти пакет, перейти к его свойствам или нажатьalt + enter
Вы найдете раздел,
Version
который в моем случае был на12.0.0.0
самом деле12.0.3
при изучении с Manage NuGet.Наконец,
clean
иrebuild
проект (вы можете удалитьbin
иobj
папку перед).Вы можете столкнуться с другими проблемами с пакетами, я сделал это для всех, и они сработали.
источник
Простые шаги. (1) Запустите «update-package Newtonsoft.Json -reinstall» в менеджере пакетов.
(2) Удалите корзину, включив просмотр скрытых файлов и удалив папку корзины.
(3) Закройте визуальную студию и снова откройте ее.
(4) Теперь запустите ваш проект снова. Я считаю, что это должно быть хорошо
источник
Я столкнулся с этой проблемой, потому что у меня было: проект A (рабочий стол .exe) относится к проекту B (переносимый .dll). У A & B были разные версии JSON.Net, поэтому возник конфликт с загрузчиком. Как только я сделал все версии JSON.net одинаковыми, это сработало. (Это то, что делают некоторые из приведенных выше решений - я просто говорю, почему это работает)
источник
Я недавно боролся с этим и со старым проектом.
Мне удалось отследить проблему после проверки, какая версия библиотеки DLL, которая на самом деле была в папке bin.
У меня был скрипт после сборки, который копировал зависимые сборки из папки библиотеки dll в папку bin. Обычная настройка за несколько дней до Nuget.
Поэтому каждый раз, когда я создавал сценарий после сборки, менял правильную версию Json.net на более старую.
источник
У меня была точно такая же проблема, и библиотека Visual Studio 13 по умолчанию для меня была 4.5, поэтому у меня есть 2 решения, одно из которых - взять ссылку на это в файле webconfig. Это последнее средство, и оно работает.
В сообщении об ошибке говорится, что в этом месте есть проблема /Projects/foo/bar/bin/Newtonsoft.Json.DLL. где библиотека DLL! Базовая проверка свойств показала, что это 4.5.0.0 или что-то подобное, поэтому я изменил webconfig, чтобы посмотреть на 4.5 и использовать 4.5.
источник
Ни один из этих вариантов не работал для меня, в конце концов это было;
Тест> Настройки теста> * .testrunconfig
Я должен был добавить новую строку
Убедитесь, что путь и версия верны для вашей настройки.
источник
Я была такая же проблема. Я создал проект 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 устранили проблему.
НТН
источник
Для меня эта проблема не была решена путем обновления пакетов NuGet или выполнения «Очистки» проекта. Это было решено путем очистки папки «obj» вручную.
источник
Вот мое решение этой проблемы, убедитесь, что номер версии в appconfig или packageconfig совпадает с эталонной версией в ваших ссылках. Смотри здесь
источник