Не удалось загрузить файл или сборку «Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed»
Я получаю сообщение об ошибке
System.IO.FileLoadException: Не удалось загрузить файл или сборку «Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed» или одну из его зависимостей. Определение манифеста размещенной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)
для моей сборки CI
- Как установить Json.Net в качестве сериализатора по умолчанию для службы WCF REST
- Deserialize json, который имеет некоторое имя свойства, начиная с числа
- Newtonsoft JSON Deserialize
- Удаление десериализации полиморфных classов json без информации о типе с использованием json.net
- Json.NET (Newtonsoft.Json) - Два «свойства» с таким же именем?
Решение, которое я пробовал
Он также не работал
- Как убедиться, что строка действительна JSON с использованием JSON.NET
- Отключить использование JSON.net
- Сериализовать контейнер перечислений в виде строк с помощью JSON.net
- Использование преобразователей Json.NET для десериализации свойств
- Как сообщить Json.Net глобально применить StringEnumConverter ко всем enumsм
- Как обрабатывать как отдельный элемент, так и массив для одного и того же свойства с помощью JSON.net
- Как десериализовать дочерний объект с динамическими (числовыми) именами клавиш?
- Как я могу разбирать JSON с C #?
В консоли диспетчера пакетов выполните: Update-Package –reinstall Newtonsoft.Json
.
ОБНОВИТЬ
Я изначально разместил это как комментарий, но, как сказал @OwenBlacker, я просто поставлю его здесь:
Если вы все еще получаете сообщение об ошибке после этого, то в конечном итоге мне помогло удалить раздел
independentAssembly
Json.Net из моего файла .config
. Переустановка возвращает его, если его нет, и, видимо, вам нужно его удалить. Пока не будет нормального решения в самом пакете, я боюсь, что этот ручной шаг является обязательным.
Примечание. Пожалуйста, прочитайте комментарии ниже, прежде чем делать это.
Согласно замечанию Рене ниже БУДЬТЕ ЗНАЧИМ, что команда, отправленная в ответ, переустановит пакет в каждом проекте вашего решения. Поэтому, если вы используете пакет Newtonsoft.Json в нескольких проектах и, возможно, используете разные версии, просто выполнение вышеуказанной команды может иметь нежелательные последствия.
Для всех, у кого проблемы с версией Newtonsoft.Json v4.5, попробуйте использовать это в web.config или app.config:
ВАЖНО : убедитесь, что в теге configuration
вашего файла конфигурации нет атрибута пространства имен (как указано в https://stackoverflow.com/a/12011221/150370 ). В противном случае tags assemblyBinding
будут проигнорированы.
Ключевым моментом является ссылка на правую версию в вашем файле конфигурации.
шаги;
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, поэтому redirect должно идти от 4.5 до 6.0, а не наоборот
Я думаю, что вы указываете на неправильную цель, измените ее на 4.5 вместо 6.0
Это должно сработать.
Я провел пару дней, пытаясь решить эту неприятную проблему. Я пробовал почти все, что можно найти в Интернете. Наконец, я обнаружил, что эта ошибка может быть вызвана (как и в моем случае) различными целевыми версиями проекта .Net (4.5 и 4.5.1) в одном решении. Эти шаги сделали это для меня:
- Дважды проверьте версию .Net каждого проекта, который находится в вашем решении. Просто щелкните правой кнопкой мыши по проекту и перейдите в «
Properties
.
-
Если возможно, установите ту же версию .Net для всех проектов. Если вы хотя бы не пытаетесь изменить проект Startup (для меня это вызвало проблемы).
-
Удалите все пакеты
Newtonsoft.Json
из решения.uninstall-package newtonsoft.json -force
-
Обновите все версии
Newtonsoft.Json
во всех файлахpackages.config
, например -
Переустановите
Newtonsoft.Json
из «Консоль диспетчера пакетов» с помощью:install-package newtonsoft.json
-
Восстановить решение
(Необязательно) 7. Если вы изменили проект запуска, верните его снова
uninstall-package newtonsoft.json -force install-package newtonsoft.json
Сделал трюк для меня 🙂
Удалите сборку Newtonsoft.Json из ссылки на проект и добавьте ее снова. Вероятно, вы случайно удалили или заменили dll.
Я писал клиент службы WebApi REST, поэтому для меня эта ошибка была вызвана добавлением ссылок на сборки System.Net.Http
и System.Net.Http.Formatting
вручную с помощью Add Reference, когда я должен был добавить Microsoft.AspNet.WebApi.Client
Пакет Microsoft.AspNet.WebApi.Client
через NuGet . См. Также этот ответ на другой вопрос .
если вы используете несколько проектов в одном решении и библиотеке одной другой проверки, все проекты имеют одну и ту же версию Newtonsoft.Json
Обычно добавление переадресации привязки должно решить эту проблему, но она не работает для меня. Через несколько часов ударившись головой о стену, я понял, что в моем web.config есть атрибут xmlns, вызывающий проблемы. После удаления атрибута xmlns из узла конфигурации в Web.config переадресация привязки работала должным образом.
Разверните правильную версию на машине CI
Это говорит вам, что загрузчик сборок нашел другую версию сборки Newtonsoft.Json
, которая не соответствует ссылке, которую вы создали в своем проекте. Чтобы правильно загрузить сборку, вы должны либо развернуть сборку сбоку вместе с вашим скомпилированным кодом, либо установить правильную версию сборки на конечной машине (то есть в GAC).
Альтернатива: убедитесь, что конфигурация находится в правильном файле
Если вы хотите сохранить текущее решение и загрузить сборку с другой версией, убедитесь, что указанная вами конфигурация находится в правильном файле .config
. Помните, что нет xpto.dll.config
, DLL, загружаемая приложением, всегда использует файл конфигурации запущенного приложения.
Работает для меня …. просто поставьте версию, которую вы используете в newVersion, т.е. (newVersion = “7.0.0.0”)
В вашем решении есть две разные версии библиотеки JSON.NET. Чтобы решить эту проблему, вы должны обновить их до последней версии. Следуй этим шагам:
1-Open solution explorer 2-Right Щелкните по имени решения 3-Выберите Manage Nuget Packages для решения 4-Select Updates из меню 5-Обновить пакет JSON.NET
Это решит вашу проблему.
ссылка: Не удалось загрузить файл или сборку «Newtonsoft.Json, Version = 7.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed» или одну из его зависимостей
Закрыть решение.
Откройте *.csproj
и *.csproj
с текстовым редактором и удалите любую строку с помощью Newtonsoft.Json
Пример:
Или
Откройте снова решение и заново установите Newtonsoft.Json на Install-Package Newtonsoft.Json
Это работает для меня.
У нас была такая же проблема, о которой вы говорили. Мы используем nunit для запуска тестов через CI, и у нас есть nunit, запускающий файл с именем tests.nunit, который описывает список тестовых dll-приспособлений для запуска.
Каждый тестовый прибор имел свой собственный файл конфигурации, но при запуске через файл «tests.nunit» переадресация привязки, похоже, игнорируется. Решением было добавить переадресацию привязки в новый файл конфигурации «tests.config», который был рядом с файлом «tests.nunit».
Вам необходимо обновить файл web.config на сервере. Когда nuget устанавливает NewtonSoft, обновите этот файл, включая этот код
У меня такая же проблема. И я также решил, что он просто делает следующее: Перейдите в TOOLS > Диспетчер пакетов NuGet и выберите Консоль диспетчера пакетов . Наконец, выполните следующие две команды 🙂
- удалить пакет newtonsoft.json -force
- install-package newtonsoft.json
В моем случае основной проект по- прежнему ссылался на старую версию Newtonsoft.Json, которая больше не существует в проекте (показана желтым восклицательным знаком). Удаление справки решает проблему, не требуется привязка Redirect.
У меня была такая же проблема с версией 7.0.0.0, и проблема, вызывающая мою проблему, была Microsoft.Rest.ClientRuntime, которая каким-то образом ссылалась на неправильную версию (6.0.0.0) Newtonsoft.json, несмотря на правильное управление зависимостями в самородок ( была установлена правильная версия newtonsoft.json (7.0.0.0)).
Я решил это, применив redirect выше от 6.0.0.0 до 7.0.0.0 (от Kadir Can) в файле конфигурации:
—-> Через несколько дней, не меняя ничего, он снова появился с той же ошибкой. Я установил версию 6.0.0.0 n, обновив ее до версии 7.0.0.0, теперь она отлично работает.
В моем случае, после загрузки сборки и добавления ссылки на проект, я решил это путем «разблокирования» DLL перед добавлением ссылки на проект.
Используя проводник Windows, перейдите в папку DLL, щелкните правой кнопкой мыши по DLL и выберите «свойства». На одной из вкладок вы найдете кнопку «разблокировать», а затем вы можете добавить ссылку, и assembly будет загружаться правильно.
Я допустил ошибку при добавлении файла DLL NewtonSoft для .Net 4.5.
Мой главный проект был 4,5, но когда я добавил дополнительный проект для своего решения, он странно добавил его как проект .Net 2.0 … и когда я попытался использовать DLL от NewtonSoft 4.5 с этим, я получил этот «Newtonsoft.Json cann «Не найдено».
Решением (конечно) было изменение этого нового проекта с .Net 2.0 до 4.5.
Мне ничего не помогло, но на самом деле это было исправлено:
- Удалите все привязки зависимостей в app.config (из всех файлов app.config в решении)
- Выполните следующую команду из «Консоль диспетчера пакетов»,
Get-Project -All | Надстройка 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. Но при добавлении ссылки я получал исключение выше.
Я, наконец, разрешил это, добавив нижеприведенный fragment кода в app.config проекта модульного тестирования:
Другая коварная проблема заключается в том, что, по-видимому, привязка переадресаций может просто терпеть неудачу, если элемент имеет неправильную конфигурацию для любых других зависимых элементов сборки.
Убедитесь, что у вас есть только один элемент под каждым элементом.
В некоторых случаях VS генерирует это:
Вместо
Мне долго приходилось осознавать, что это была проблема!
Ниже раздела добавьте в свой web.config
Если ошибка исчезает локально и все еще появляется на сервере, решение, которое работает со мной, это удалить папку bin и packages.config и web.config и повторно загрузить эти файлы
Просто проверьте версию свойств Newtonsoft.Json Newtonsoft
Затем вам нужно добавить эту версию в свою веб-конфигурацию (в моем случае 8.0.0.0).