Не удалось загрузить файл или сборку "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

Решение, которое я пробовал

<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>

Он также не работал

Ответ 1

В консоли менеджера пакетов выполните: Update-Package –reinstall Newtonsoft.Json.

UPDATE

Я изначально разместил это как комментарий, но как @OwenBlacker предложил, я просто поставлю его здесь:

Если вы все равно получите сообщение об ошибке после этого, то в конечном итоге мне удалось удалить раздел Json.Net <dependentAssembly> из моего файла .config. Переустановка возвращает его, если его нет, и, видимо, вам нужно его удалить. Пока не будет нормального решения в самом пакете, я боюсь, что этот ручной шаг является обязательным.

Примечание. Пожалуйста, прочитайте комментарии ниже, прежде чем делать это.

В соответствии с комментарием René ниже BE AWARE, что команда, отправленная в ответ, переустановит пакет в каждом проекте вашего решения. Поэтому, если вы используете пакет Newtonsoft.Json в нескольких проектах и, возможно, используете разные версии, просто выполнение вышеуказанной команды может иметь нежелательные последствия.

Ответ 2

Для всех, у кого проблемы с версией Newtonsoft.Json v4.5, попробуйте использовать это в web.config или app.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-6.0.0.0" newVersion="6.0.0.0"/>
       </dependentAssembly>
    </assemblyBinding>
</runtime>

ВАЖНО. Убедитесь, что тег configuration вашего конфигурационного файла не имеет атрибута пространства имен (как предлагается в fooobar.com/questions/25420/...). В противном случае теги assemblyBinding будут игнорироваться.

Ответ 3

Это единственное решение, Ключевой момент - это ссылка на правую версию в вашем файле конфигурации.

Шаги;

1- посмотрите, какая версия вашего Newtonsoft.Json.dll в свойстве ссылки на проект, какая версия в вашей папке пакета (например, моя 7.0.1, а эталонная версия 7.0.0.0)

2 Посмотрите, что ожидает от вас проект в исключении (мой 6.0.0.0)

3- Добавить зависимую сборку в ваш файл конфигурации, как и должно быть.

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"  publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>

Ответ 4

Мне не повезло ни с одним из представленных здесь решений (удаление, переустановка, удаление ссылок, создание bindingRedirects и т.д.) Мне пришлось вернуться к старой версии Newtonsoft. Версия 5.0.6 работала раньше, поэтому я попробовал это. Мне пришлось ввести эти две команды в консоли пакета:

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

Параметр -force в первой команде требуется для принудительного удаления. Зависимости от других сборок предотвращают удаление без него.

Ответ 5

Я исправил проблему с добавлением этого перенаправления связывания в мой файл .config:

<runtime>
    . . . 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
            <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

Сообщение об ошибке жалуется на то, что не найдет версию 4.5.0.0, текущая версия Newtonsoft.Json - 6.0.0.0, поэтому перенаправление должно идти от 4.5 до 6.0, а не наоборот

Ответ 6

Я думаю, что вы указываете на неверную цель, измените ее на 4.5 вместо 6.0

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
        culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>

Это должно работать.

Ответ 7

Я провел пару дней, пытаясь решить эту неприятную проблему. Я пробовал почти все, что можно найти в Интернете. Наконец, я обнаружил, что эта ошибка может быть вызвана (как и в моем случае) различными целевыми версиями проекта .Net(4.5 и 4.5.1) в одном решении. Шаги для него исправили:

  • Дважды проверьте версию .Net каждого проекта, который в вашем решении. Просто щелкните правой кнопкой мыши по проекту и перейдите к Properties.

введите описание изображения здесь

  1. Если возможно, установите ту же версию .Net для всех проектов. Если вы хотя бы не пытаетесь изменить проект запуска (для меня это вызвало проблемы).

  2. Удалите все пакеты Newtonsoft.Json из решения.

    uninstall-package newtonsoft.json -force

  3. Обновите все версии Newtonsoft.Json во всех файлах packages.config, например

    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />

  4. Переустановите Newtonsoft.Json из "Консоль диспетчера пакетов" с помощью:

    install-package newtonsoft.json

  5. Восстановить решение

(необязательно) 7. Если вы изменили проект запуска, верните его снова

Ответ 8

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

Ответ 9

Я писал клиент службы WebApi REST, поэтому для меня эта ошибка была вызвана добавлением ссылок на сборки System.Net.Http и System.Net.Http.Formatting вручную с помощью Add Reference, когда я должен был добавить пакет Microsoft.AspNet.WebApi.Client через NuGet. См. Также этот ответ на другой вопрос.

Ответ 10

uninstall-package newtonsoft.json -force
install-package newtonsoft.json

Сделал трюк для меня:)

Ответ 11

Обычно добавление перенаправления привязки должно решить эту проблему, но для меня это не сработало. Через несколько часов ударившись головой о стену, я понял, что в моем web.config есть атрибут xmlns, вызывающий проблемы. После удаления атрибута xmlns из конфигурации node в Web.config переадресация привязки работала должным образом.

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx

Ответ 12

если вы используете несколько проектов в одном решении и библиотека другого check - все проекты имеют ту же версию Newtonsoft.Json

Ответ 13

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"
        publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

Работает для меня.... просто поставьте версию, которую вы используете в newVersion i.e(newVersion = "7.0.0.0" )

Ответ 14

Разверните правильную версию на машине CI

Это говорит вам, что загрузчик сборок нашел другую версию сборки Newtonsoft.Json, которая не соответствует ссылке, которую вы создали в своем проекте. Чтобы правильно загрузить сборку, вы должны либо развернуть сборку сбоку вместе с вашим скомпилированным кодом, либо установить правильную версию сборки на конечной машине (то есть в GAC).

Альтернатива: убедитесь, что конфигурация находится в правильном файле

Если вы хотите сохранить текущее решение и загрузить сборку с другой версией, убедитесь, что указанная вами конфигурация находится в правильном файле .config. Помните, что нет xpto.dll.config, DLL, загружаемая приложением, всегда использует файл конфигурации запущенного приложения.

Ответ 15

У нас была такая же проблема, о которой вы говорили. Мы используем nunit для запуска тестов через CI, и у нас есть nunit, запускающий файл с именем tests.nunit, который описывает список тестовых dll-приспособлений для запуска.

Каждый испытательный прибор имел свой собственный файл конфигурации, но при запуске через файл "tests.nunit" переадресация привязки, похоже, игнорируется. Решение заключалось в том, чтобы добавить переадресацию привязки в новый файл конфигурации "tests.config", который был рядом с файлом "tests.nunit".

Ответ 16

Вы должны обновить файл web.config на сервере. Когда nuget устанавливает NewtonSoft, обновите этот файл, включая этот код

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <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>
</assemblyBinding>

Ответ 17

Закрыть решение.

Откройте 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

Это работает для меня.

Ответ 18

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

1-Open explorer 2-Правый Щелкните по имени решения 3-Выберите "Управление пакетами Nuget для решения" 4-Выберите обновления из меню 5-обновление пакета JSON.NET

Это решит вашу проблему.

ссылка: Не удалось загрузить файл или сборку 'Newtonsoft.Json, Version = 7.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' или одну из его зависимостей

Ответ 19

У меня такая же проблема. И я также решил это сделать следующее: Перейдите в ИНСТРУМЕНТЫ > Диспетчер пакетов NuGet и выберите Консоль диспетчера пакетов. Наконец, выполните следующие две команды:)

  • удалить пакет newtonsoft.json -force
  • установочный пакет newtonsoft.json

Ответ 20

В моем случае основной проект был , все еще ссылающийся на старую версию Newtonsoft.Json, которая больше не существует в проекте (показана желтым восклицательным знаком). Удаление справки решает проблему, не требуется привязка к Rirectirect.

Ответ 21

У меня была такая же проблема с версией 7.0.0.0, и проблема, вызывающая мою проблему, была Microsoft.Rest.ClientRuntime, которая каким-то образом имела в виду неправильная версия (6.0.0.0) Newtonsoft.json, несмотря на правильное управление зависимостями в самородок (была установлена ​​правильная версия newtonsoft.json(7.0.0.0)).

Я решил это, применив перенаправление выше от 6.0.0.0 до 7.0.0.0 (от Kadir Can) в файле конфигурации:

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0" />

---- > Через несколько дней, не меняя ничего, он снова появился с той же ошибкой. Я установил версию 6.0.0.0 n, обновив ее до 7.0.0.0, теперь она отлично работает.

Ответ 22

В моем случае, после загрузки сборки и добавления ссылки на проект, я решил это путем "разблокирования" DLL перед добавлением ссылки на проект.

Используя проводник Windows, перейдите в папку DLL, щелкните правой кнопкой мыши по DLL и выберите "свойства". На одной из вкладок вы найдете кнопку "разблокировать", а затем вы можете добавить ссылку, и сборка будет загружаться правильно.

Ответ 23

Я допустил ошибку при добавлении файла DLL NewtonSoft для .Net 4.5.

Мой основной проект был 4,5, но когда я добавил дополнительный проект для своего решения, он странно добавил его как проект .Net 2.0... и когда я попытался использовать DLL NewtonSoft 4.5 с этим, я получил этот "Newtonsoft" Ошибка Json не найдена.

Решение (конечно) состояло в том, чтобы изменить этот новый проект с .Net 2.0 до 4.5.

Ответ 24

Мне ничего не помогло, но на самом деле это было исправлено:

  • Удалите все привязки зависимостей в app.config (из всех файлов app.config в решении)
  • Выполните следующую команду из "Консоль диспетчера пакетов"

Get-Project -All | Надстройка BindingRedirect

  1. Перестроить

Ссылка: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx

Ответ 25

Щелкните правой кнопкой мыши на своем проекте, выберите управление пакетами Nuget, введите newtonsoft в поле поиска и установите последнюю версию. Затем запустите приложение

Ответ 26

Я столкнулся с такой же ошибкой и боролся с ней часами. У меня был проект веб-API, который использует Newtonsoft.json и еще один проект UnitTest для проекта веб-API. Для проекта unit test также нужна ссылка Newtonsoft.json. Но при добавлении ссылки я получал исключение выше.

Я, наконец, разрешил его, добавив нижеприведенный фрагмент кода в app.config проекта unit test:

<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>

Ответ 27

Другая коварная проблема заключается в том, что похоже, что переадресация связывания может просто терпеть неудачу, если элемент имеет неправильную конфигурацию для любых других зависимых элементов сборки.

Убедитесь, что у вас есть только один элемент под каждым элементом.

В некоторых случаях VS генерирует это:

  <dependentAssembly>
    <assemblyIdentity ...
    <assemblyIdentity ...
  </dependentAssembly>

Вместо

  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>

Мне долго приходилось осознавать, что это была проблема!

Ответ 28

Если ошибка исчезает локально и все еще появляется на сервере, решение, которое работает со мной, - это удалить папку bin и packages.config и web.config и повторно загрузить эти файлы.

Ответ 29

Проблема для меня была обесцененной версией Newtonsoft.Json. Повторная установка не помогла.

В Visual Studio перейдите в Инструменты- > Управление пакетами NuGet. Выберите "Обновления". Поиск Newtonsoft. Нажмите "Обновить", чтобы установить последнюю версию.

Ответ 30

Кроме того, в среде CI с восстановлением NuGet убедитесь, что у вас нет частичных папок, проверенных в исходном элементе управления. По умолчанию при добавлении папок в исходный элемент управления он автоматически исключает сборку. Кроме того, это разрушает всю цель восстановления пакетов nuget при сборке. Либо проверка сборок, либо проверка в каких-либо папках пакетов получат успешную сборку, но лучше не проверять пакеты nuget в исходном элементе управления.