Не удалось загрузить файл или сборку Newtonsoft.json.dll - PullRequest
9 голосов
/ 24 февраля 2012

«Не удалось загрузить файл или сборку» Newtonsoft.Json, версия = 4.0.3.0, культура = нейтральная, PublicKeyToken = 30ad4fe6b2a6aeed 'или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040) ».

Для отправки в твиттер требуется сборка 'NewtonsoftJson.dll'. Используемая версия - 4.0.3.0.

И та же сборка (но diff версия 4.0.0.0) используется как зависимая сборка в Facebook C # api (dll).Однако вышеприведенная сборка (4.0.3.0) не работает в обоих случаях (т.е. для публикации в твиттере и для входа в Facebook).Для ее решения создан отдельный проект для публикации в твиттере и ссылки на сборку (4.0.3.0) отдельно (в проекте для твиттер-поста). И еще одна версия (4.0.0.0) была добавлена ​​в качестве ссылки в основной проект для фейсбукано все равно ошибка появляется. Если твиттер-проект отключен и запущен, то логин facebook работает нормально и наоборот.

Я провел много исследований и попробовал следующее.

удалить временную asp.Чистые файлы чистое решение перезагрузите компьютер

Даже попытался удалить сборку из gac (однако она там не зарегистрирована).

Пожалуйста, помогите мне в этом, так как она не работает.Спасибо, S

Ответы [ 3 ]

8 голосов
/ 23 мая 2013

Добавьте в файл 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-4.5.0.0" newVersion="4.5.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

в ваших <configuration></configuration> тегах

8 голосов
/ 24 февраля 2012

Не ясно, каковы взаимоотношения проектов или когда происходит эта ошибка, но вот предположение.

У вас есть 3 проекта: проект facebook (версия 4.0.0.0), проект twitter (версия 4.0.3.0) и основной проект, который ссылается на оба этих проекта. Возможно, вы сможете построить это решение, но при запуске привязка сборки не удастся. Зачем? потому что поведение по умолчанию - копировать сборки локально перед запуском. Что происходит, так это то, что первый проект создает копии в bin (скажем, в твиттере), затем второй проект строит (facebook), затем основной. Тем не менее, в конце этой версии 4.0.0.0 находится папка bin. Когда вы запускаете, как только вы вызываете что-то из твиттера, которое пытается использовать проблемную сборку, связывание завершается неудачно, потому что у него больше нет доступа к версии сборки 4.0.3.0.

Есть несколько способов обойти это. Одним из них является регистрация обеих сборок в GAC. Если это невозможно, посмотрите перенаправление привязки сборки в вашем файле конфигурации. Другой способ - зарегистрироваться для события AssemblyResolve и загрузить сборку программно.

0 голосов
/ 20 июня 2016

Установить пакет Newtonsoft во все проекты.

Install-Package Newtonsoft.Json -Version 8.0.3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...