Я получаю ошибку
System.IO.FileLoadException: не удалось загрузить файл или сборку 'Newtonsoft.Json, версия = 4.5.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
для моей сборки CI
Решение, которое я попробовал
<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 –reinstall Newtonsoft.Json
.ОБНОВИТЬ
Первоначально я разместил это как комментарий, но, как предложил @OwenBlacker, я просто оставлю это здесь:
Если после этого вы все еще получаете сообщение об ошибке, то, в конечном итоге, у меня сработало то, что я удалил
<dependentAssembly>
раздел Json.Net из своего.config
файла. Переустановка возвращает его, если его там нет, и, очевидно, вам нужно удалить его. Пока не будет нормального решения в самой упаковке, я боюсь, что этот ручной шаг является обязательным.Примечание: пожалуйста, прочитайте комментарии ниже, прежде чем делать это.
В соответствии с комментарием Рене, приведенным ниже, БУДЬТЕ ВНИМАТЕЛЬНЫ, что команда, опубликованная в ответе, переустанавливает пакет в каждом проекте вашего решения. Поэтому, если вы используете пакет Newtonsoft.Json в нескольких проектах и, возможно, используете разные версии, простое выполнение вышеуказанной команды может иметь нежелательные последствия.
источник
<dependentAssembly>
раздел Json.Net из моего.config
файла. Переустановка возвращает его, если его там нет, и, очевидно, вам нужно удалить его. Пока не будет нормального решения в самой упаковке, я боюсь, что этот ручной шаг является обязательным.Всем, у кого есть проблемы с версией Newtonsoft.Json v4.5, попробуйте использовать это в web.config или app.config:
ВАЖНО : Убедитесь, что у
configuration
тега вашего конфигурационного файла нет атрибута пространства имен (как предложено в https://stackoverflow.com/a/12011221/150370 ). В противном случаеassemblyBinding
теги будут игнорироваться.источник
newVersion="6.0.0.0"
следует заменить наnewVersion="7.0.0.0"
любую версию, которую вы используетеКлючевым моментом является ссылка на правильную версию в вашем конфигурационном файле.
шаги;
1- посмотрите, какая версия вашего Newtonsoft.Json.dll в свойстве ссылки на проект, какая версия в папке вашего пакета (например, у меня 7.0.1, а эталонная версия 7.0.0.0)
2 - посмотрите, что проект ожидает от вас в исключении (у меня 6.0.0.0)
3- Добавьте зависимую сборку в ваш конфигурационный файл, как и должно быть ..
источник
Мне не повезло ни с одним из представленных здесь решений (удаление, переустановка, удаление ссылок, создание bindingRedirects и т. Д.). Мне пришлось вернуться к старой версии Newtonsoft. Версия 5.0.6 работала раньше, поэтому я попробовал ее. Мне пришлось ввести эти две команды в консоли пакетов:
uninstall-package newtonsoft.json -force
install-package newtonsoft.json -version "5.0.6"
Параметр
-force
в первой команде необходим для принудительного удаления. Зависимости с другими сборками предотвращают удаление без него.источник
Я исправил проблему с добавлением этого перенаправления привязки в мой файл .config:
Сообщение об ошибке жалуется на отсутствие версии 4.5.0.0, текущей версией Newtonsoft.Json является 6.0.0.0, поэтому перенаправление должно быть с 4.5 до 6.0, а не наоборот.
источник
Я думаю, что вы указываете на неправильную цель, измените ее на 4,5 вместо 6,0
Это должно работать.
источник
Я потратил пару дней, пытаясь решить эту неприятную проблему. Я перепробовал почти все, что можно найти в Интернете. Наконец, я обнаружил, что эта ошибка может быть вызвана (как в моем случае) различными целевыми версиями проекта .Net (4.5 и 4.5.1) в одном решении. Шаги ниже исправили это для меня:
Properties
.Если возможно, установите одинаковую версию .Net для всех проектов. Если не по крайней мере, попытайтесь изменить проект запуска (для меня это был тот, который вызывает проблемы).
Удалите все
Newtonsoft.Json
пакеты из раствора.uninstall-package newtonsoft.json -force
Обновите все
Newtonsoft.Json
версии во всехpackages.config
файлах, вот так<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
Переустановите
Newtonsoft.Json
из «Консоли диспетчера пакетов» с помощью:install-package newtonsoft.json
Восстановить решение
(Необязательно) 7. Если вы изменили проект автозагрузки, верните его снова
источник
Сделал трюк для меня :)
источник
если вы используете несколько проектов в одном решении и в одной библиотеке проверьте, все ли проекты имеют одинаковую версию Newtonsoft.Json
источник
Удалите сборку Newtonsoft.Json из ссылки на проект и добавьте ее снова. Вы, вероятно, удалили или заменили dll случайно.
источник
Я писал клиент сервиса WebApi REST, поэтому для меня эта ошибка была вызвана добавлением ссылок на сборки
System.Net.Http
иSystem.Net.Http.Formatting
сборок вручную с помощью добавления ссылки, когда я должен был добавитьMicrosoft.AspNet.WebApi.Client
пакет через NuGet . Смотрите также этот ответ на другой вопрос .источник
В вашем решении есть 2 разные версии библиотеки JSON.NET. Чтобы решить эту проблему, вы должны обновить их до последней версии. Следуй этим шагам:
1-Откройте обозреватель решений. 2-Щелкните правой кнопкой мыши на имени решения. 3-Выберите Управление пакетами Nuget для решения. 4-Выберите обновления в меню. 5-Обновите пакет JSON.NET.
Это решит вашу проблему.
ссылка: не удалось загрузить файл или сборку 'Newtonsoft.Json, версия = 7.0.0.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed' или одна из ее зависимостей
источник
Разверните правильную версию на машине CI
Это говорит о том, что загрузчик сборки обнаружил другую версию
Newtonsoft.Json
сборки, которая не соответствует ссылке, созданной вами в вашем проекте. Чтобы правильно загрузить сборку, вы должны либо развернуть сборку рядом с вашим скомпилированным кодом, либо установить правильную версию сборки на конечном компьютере (то есть в GAC).Альтернатива: убедитесь, что конфигурация находится в правильном файле
Если вы хотите сохранить текущее решение и загрузить сборку с другой версией, убедитесь, что опубликованная вами конфигурация находится в правильном
.config
файле. Помните, что нетxpto.dll.config
, DLL, загруженная приложением, всегда использует файл конфигурации запущенного приложения.источник
Обычно добавление перенаправления привязки должно решить эту проблему, но у меня это не сработало. После нескольких часов удара головой о стену я понял, что в моем файле web.config есть атрибут xmlns, вызывающий проблемы. После удаления атрибута xmlns из узла конфигурации в Web.config перенаправления привязки работали, как и ожидалось.
http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx
источник
Работает для меня .... просто поместите версию, которую вы используете в newVersion т.е. (newVersion = "7.0.0.0")
источник
Закрыть решение.
Открыть
packages.config
и*.csproj
с помощью текстового редактора и удалить любую строку есть Newtonsoft.JsonПример:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>
Или
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />
Откройте решение снова и переустановите Newtonsoft.Json
Install-Package Newtonsoft.Json
Это работает для меня.
источник
У нас была та же самая проблема, о которой вы упоминали. Мы используем nunit для запуска тестов через CI, и у нас есть nunit, запускающий файл под названием tests.nunit, в котором описывается список тестовых приспособлений dll для запуска.
Каждый тестовый прибор имел свой собственный файл конфигурации, но при запуске через файл «tests.nunit» перенаправления привязки, похоже, игнорируются. Решением было добавить перенаправления привязки в новый файл конфигурации «tests.config», который находился рядом с файлом «tests.nunit».
источник
У меня такая же проблема. И я также решил это, выполнив следующие действия: Перейдите в TOOLS > Диспетчер пакетов NuGet и выберите Консоль диспетчера пакетов . Наконец, выполните следующие две команды :)
источник
Вам следует обновить файл web.config на сервере. Когда Nuget устанавливает NewtonSoft, обновите этот файл, включая этот код
источник
Просто проверьте версию свойств Newtonsoft.Json Newtonsoft
Затем вам нужно добавить эту версию в ваш веб-конфиг (в моем случае 8.0.0.0) веб- конфиг
источник
Я сделал ошибку, добавив .dll-файл NewtonSoft для .Net 4.5.
Мой главный проект был 4.5, но когда я добавил дополнительный проект в свое решение, он странным образом добавил его в качестве проекта .Net 2.0 ... и когда я попытался использовать 4.5 dll NewtonSoft с этим, я получил это "Newtonsoft.Json не найдена "ошибка.
Решение (конечно) состояло в том, чтобы изменить этот новый проект с .Net 2.0 на 4.5.
источник
В моем случае основной проект все еще ссылался на старую версию Newtonsoft.Json, которой в проекте больше не было (показано желтым восклицательным знаком). Удаление ссылки решило проблему, не было необходимости в bindingRedirect.
источник
У меня была точно такая же проблема с версией 7.0.0.0, и библиотека, вызывающая мою проблему, была Microsoft.Rest.ClientRuntime, которая как-то ссылалась на неправильную версию (6.0.0.0) Newtonsoft.json, несмотря на правильное управление зависимостями в nugget ( правильная версия newtonsoft.json (7.0.0.0) была установлена).
Я решил это, применив перенаправление выше с 6.0.0.0 до 7.0.0.0 (из Kadir Can) в файле конфигурации:
----> Через несколько дней, ничего не меняя, снова возникла та же ошибка. Я установил версию 6.0.0.0 и обновил ее до 7.0.0.0, теперь она работает нормально.
источник
В моем случае, после загрузки сборки и добавления ссылки на проект, я решил эту проблему, «разблокировав» библиотеку DLL перед добавлением ссылки на проект.
С помощью проводника Windows перейдите в папку DLL, щелкните правой кнопкой мыши DLL и выберите «Свойства». На одной из вкладок вы найдете кнопку «разблокировать», а затем сможете добавить ссылку, и сборка загрузится правильно.
источник
Ничто из вышеперечисленного не помогло мне, но на самом деле это исправлено следующим образом:
Get-Project -Все | Надстройка BindingRedirect
Ссылка: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx
источник
Щелкните правой кнопкой мыши свой проект, выберите управление пакетами Nuget, введите newtonsoft в поле поиска и установите последнюю версию. Затем запустите ваше приложение
источник
Я столкнулся с той же ошибкой и боролся с ней часами. У меня был проект веб-API, который использует Newtonsoft.json и другой проект UnitTest для проекта веб-API. Проект модульного тестирования также нуждался в ссылке Newtonsoft.json. Но при добавлении ссылки я получил вышеупомянутое исключение.
Я наконец решил ее, добавив приведенный ниже фрагмент кода в app.config проекта модульного теста:
источник
Еще одна коварная проблема заключается в том, что перенаправления привязки могут просто молча завершиться сбоем, если элемент имеет неправильную конфигурацию для любых других элементов зависимых сборок.
Убедитесь, что у вас есть только один элемент под каждым элементом.
В некоторых случаях VS генерирует это:
Вместо того
Мне потребовалось много времени, чтобы понять, что это проблема!
источник
Ниже раздел добавить в свой web.config
источник
Если ошибка исчезает локально и все еще появляется на сервере, решение, которое работает со мной, состоит в том, чтобы удалить папку bin и packages.config и web.config и повторно загрузить эти файлы
источник