Не удалось загрузить файл или сборку 'Newtonsoft.Json' или одну из ее зависимостей. Определение манифеста не соответствует ссылке на сборку
Вещи, которые я пробовал после поиска:
в 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, но я получаю ту же ошибку. Tamet 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, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, булева throwOnFileNotFound, булева forIntrospection, булевы suppressSecurityChecks) +34 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Доказательства assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152 System.Reflection.RuntimeAssembly.InternalLoad(строка stringString, доказательство сборки AssemblySecurity, StackCrawlMark& stack rk, IntPtr pPrivHostBinder, логическое значение forIntrospection) +77 System.Reflection.RuntimeAssembly.InternalLoad(строка String AssemblyString, доказательство assemblySecurity, StackCrawlMark& stackMark, логическое значение для Introspection) +16 System.Reflection.Asse28.String..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.LoadAllAsll.Info. ai) +130 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies(+) System.Web.Compilation.BuildManager.ExecutePreAppStart() +153 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, политический уровень приложения-объекта-приемника, уровень хост-политики, уровень объекта
[HttpException (0x80004005): не удалось загрузить файл или сборку 'Newtonsoft.Json, версия =6.0.1.0, культура = нейтральная, PublicKeyToken=30ad4fe6b2a6aeed' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)] System.Web.HttpRuntime.FirstRequestInit(контекст HttpContext) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit(контекст HttpContext) +101Test.Web.HttpRequestRequestIntext_West.Web.WebWiki
Информация о версии: Microsoft .NET Framework Версия:4.0.30319; ASP.NET версия:4.0.30319.18408
36 ответов
Хорошо, я думаю, что получил его на работу сейчас. Я удалил все файлы Newtonsoft.Json.dll на своем компьютере, которые не были последней версией, которую я смог найти, убедился, что у меня установлена последняя версия в NuGet, и собрал ее, а также убедился, что она самая последняя в папке bin, и Я оставил изменения в web.config и.csproj. Теперь я нахожусь на другой ошибке, поэтому она должна работать..
Чтобы решить эту проблему, я убедился, что все мои проекты использовали одну и ту же версию, выполнив следующую команду и проверив результаты:
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
Я использую 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" />
Я попробовал следующее, уже убедившись, что мой компьютер имеет одинаковую версию во всех местах и что все мои проекты указывают на один и тот же путь ссылки. Я также удостоверился, что привязка старой версии была их и привязана к текущей версии dll, которая была у меня.
Я работаю в среде со строгим фреймворком, и команда фреймворков часто расстраивает управление версиями различными dll.
Я решил эту проблему, запустив консоль диспетчера пакетов в Visual Studio (2013). Оттуда я выполнил следующую команду:
update-package Newtonsoft.Json -reinstall
с последующим
update-package Newtonsoft.Json
Это прошло и обновило все мои файлы конфигурации и соответствующие файлы проекта. Принуждение их всех к одной и той же версии dll. Который был изначально версии 4.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" />
После нескольких часов борьбы с этим... я сделал следующее:
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
папки раньше).
Вы можете столкнуться с проблемами зависимостей других пакетов, я сделал это для всех, и они сработали.
Комментируя это, эта часть моего 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
Вы можете решить эту проблему, добавив следующие строки в файл 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>
В моем случае это был только вопрос:
Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache
Проблема была вызвана, когда я переназначил папку TFS.
Из Tools>>NuGet Package Manager>> Управление пакетом для обновления решения Newtonsoft.Json всех решений до последней версии
Я попробовал шаги Олега, и они работали для моей же ситуации.
шаги:
Бежать
update-package Newtonsoft.Json -reinstall
в диспетчере пакетов.Удалить свой
bin
включив просмотр скрытых файлов и удаливbin
папка.Закройте Visual Studio и снова откройте его.
Теперь запустите ваш проект снова. Я считаю, что все должно быть в порядке!
Что действительно помогло мне, так это отключить сборку Resharper и использовать опцию перестроения VisualStudio в моем проекте.
У меня была та же проблема в тестовом проекте, который имел ссылку на проект MVC 5. Это произошло после того, как я слился с проектом MVC 5. Я исправил это, установив обновления Visual Studio 2012, как описано здесь в ответе Андре.
- В вашей визуальной студии перейдите на
- Инструменты> Расширения и обновления
- Выберите "Обновления" в списке аккордеона слева.
- Выберите "Обновления продукта".
- Обновление до последней версии
Если вы работаете с какой-то подрывной деятельностью: удалите проект и повторно загрузите его, у меня это сработало:S
Хорошо, я думаю, что нужно сделать, это добавить мой ответ здесь в этот длинный список вместо создания дублирующего вопроса...
Если вы получаете это в 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.
Если ничего из этого не работает, пожалуйста, проверьте этот ответ:
/questions/33312434/obyazatelnaya-problema-perenapravleniya-vnet/33312448#33312448
(TL; DR: удалить пространство имен xml из configuration
тег в вашем файле конфигурации. В противном случае обязательные перенаправления будут игнорироваться)
В некоторых случаях, если вы удалите Bin
а также Obj
папки решат эту проблему.
Я не знаю почему, но в моем случае, даже если я удаляю папку bin из проекта, когда я собираю проект, он копирует старую версию newtonsoft.json, я копировал dll новой версии из папки пакета, и пока это решается.
Решение , которое решило мою проблему для этого
перейдите по ссылке-> щелкните правой кнопкой мыши Newtonsoft.json- перейдите в свойства и проверьте версию
эта же версия должна быть в
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>
Я получил ту же проблему с ядром dotnet и сумел ее исправить, очистив кеш NuGet.
Откройте PowerShell и введите следующую команду.
dotnet nuget locals all --clear
Затем я закрыл Visual Studio, открыл его снова и ввел следующую команду в консоль диспетчера пакетов:
Update-Package
NuGet теперь должен восстановить все пакеты и снова заполнить кеш Nuget.
После этого я смог собрать и запустить свое ядро dotnet webapi в контейнере Linux.
Я решил это, удалив более низкую версию 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>
Ни один из ответов, включая проверенный, у меня не сработал.
Решение было гораздо более простым. Сначала я удалил ссылки со своего уровня BUS. Затем удалил DLL из проекта (чтобы убедиться, что он пропал), затем переустановил JSON.NET из пакетов nuget. И сложная часть заключалась в том, чтобы "выключить и снова включить".
Я только что перезапустил визуальную студию, и там все заработало!
Так что, если вы попробуете все возможное и по-прежнему не можете решить проблему, попробуйте выключить и снова включить Visual Studio, это может помочь.
В моем случае в сообщении об ошибке была "версия 6.0.0", но эта версия недоступна для установки, поэтому я установил "версию 6.0.1" в моем проекте и решил мою проблему.
install-package Newtonsoft.Json -Version 6.0.1 -Project MyProjectX
Вот мое решение этой проблемы, убедитесь, что номер версии в appconfig или packageconfig совпадает с эталонной версией в ваших ссылках. Смотрите здесь
У меня была точно такая же проблема, и библиотека Visual Studio 13 по умолчанию для меня была 4.5, поэтому у меня есть 2 решения, одно из которых - взять ссылку на это в файле webconfig. Это последнее средство, и оно работает.
В сообщении об ошибке говорится, что в этом месте есть проблема /Projects/foo/bar/bin/Newtonsoft.Json.DLL. где библиотека DLL! Базовая проверка свойств показала мне, что это 4.5.0.0 или что-то подобное, поэтому я изменил webconfig, чтобы посмотреть на 4.5 и использовать 4.5.
В частности, для контекстов IIS :
Я хотел бы упомянуть еще один аспект, который я не вижу в других ответах. Если вы видите эту ошибку в IIS, иногда необъяснимым образом сохраняются кэшированные копии предыдущих версий библиотек DLL во временных каталогах. Если вы проверили версию DLL в каталоге /bin и переадресацию привязки в web.config, а IIS просто не «видит» локальную (правильную версию) копию DLL, вот шаги, чтобы добраться до сути:
- Следуйте инструкциям в этом ответе , чтобы включить ведение журнала привязки сборки (существует снижение производительности, поэтому не забудьте отключить его, когда закончите);
- Получить средство просмотра журнала привязки сборки (FUSLOGVW.exe, в VS SDK или получить от Microsoft );
- Отправьте запрос на сайт, просмотрите список журналов, чтобы найти сбойную привязку.
- В содержимом журнала вы можете увидеть каждую DLL-кандидат, которая считается удовлетворяющей запросу на привязку. Если вы убедились, что копия в вашем каталоге bin верна, проверьте остальные и удалите их при необходимости:
После установки или обновления Newtonsoft в web.config происходят некоторые изменения, и эти изменения необходимо перенести в web.config в среде live/prod, они необходимы и зависят от того, какая версия используется.
У нас была такая же проблема, потому что мы использовали автоматизацию выпуска, и файл wen.config не будет переопределен в среде prod/staging. Поэтому вебу пришлось вручную изменить файл конфигурации.
Моя проблема была newVersion в этом коде в 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" />
Вы можете увидеть версию пакета Newtonsoft.Json в менеджере пакетов nuget и использовать ее.
Я недавно боролся с этим и со старым проектом.
Мне удалось отследить проблему после проверки, какая версия DLL, которая на самом деле была в папке bin.
У меня был скрипт после сборки, который копировал зависимые сборки из папки библиотеки dll в папку bin. Обычная настройка за несколько дней до Nuget.
Поэтому каждый раз, когда я создавал сценарий после сборки, менял правильную версию Json.net на более старую.
Простые шаги. (1) Запустите "update-package Newtonsoft.Json -reinstall" в менеджере пакетов.
(2) Удалите свою корзину, включив просмотр скрытых файлов и удалив папку корзины.
(3) Закройте визуальную студию и снова откройте ее.
(4) Теперь запустите ваш проект снова. Я считаю, что это должно быть хорошо