2012-02-24 10 views
8

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

сборник «NewtonsoftJson.dll» требуется для публикации в twitter. Используемая версия 4.0.3.0.

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

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

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

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

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

ответ

8

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

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

Существует несколько способов обойти это. Один из них регистрирует обе сборки в GAC. Если это не выполнимо, посмотрите в файл конфигурации assembly binding redirection. Другим является регистрация для AssemblyResolve event и загрузка программы программно.

+0

Пожалуйста, посмотрите на http://stackoverflow.com/questions/22490967/visual-studio-keeps-overwriting-newtonsoft-json-dll-with-an-older-version Builing один проект, изменения Версия Newtonsoft.json.dll в другом! – nsb

8

Добавьте следующие строки в файл 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> теги

0

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

Install-Package Newtonsoft.Json -Version 8.0.3