Newtonsoft.Сборка В JSON Конфликта
Я использую Netonsoft.JSON в моем проекте. Он отлично работает, пока я не начну интегрировать PayPal SDK в свой проект. Мой код, как показано ниже.
String AccessToken =
new PayPal.OAuthTokenCredential("", "").GetAccessToken(); ---->>>> This Line Throwing An Error
PayPal.Api.Payments.Address add = new PayPal.Api.Payments.Address();
add.city = TextBoxCity.Text;
add.line1 = TextBoxAddress.Text;
add.phone = TextBoxPhoneNumber.Text;
add.postal_code = TextBoxZipcode.Text;
add.state = TextBoxState.Text;
PayPal.Api.Payments.CreditCard cc = new PayPal.Api.Payments.CreditCard();
cc.number = TextBoxCreditCardNumber.Text;
cc.first_name = TextBoxFirstName.Text;
cc.last_name = TextBoxLastName.Text;
cc.expire_month = Convert.ToInt16(TextBoxExpiryMonth.Text);
cc.expire_year = Convert.ToInt16(TextBoxExpiryYear.Text);
cc.cvv2 = TextBoxCVVNumber.Text;
cc.billing_address = add;
cc.Create(AccessToken);
и я получаю ошибку, как показано ниже
System.IO.FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Я ищу в интернете и нашел решение для изменения файла конфигурации. Поэтому я меняю свой файл конфигурации, как показано ниже
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
Я также играю со свойствами сборки, такими как копировать локальную, конкретную версию, но ничто не помогает мне решить эту проблему. Как я могу решить сборку конфликт?
5 ответов
у меня была такая же проблема, и я решил ее, обновив Newtonsoft.Json до последней версии с помощью
Update-Package Newtonsoft.Json
а затем перейдем к Web.config и добавил:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
+1 к zbarrier для его решения. Вот почему это сработало...
+1 к zbarrier для его ответа, который помог мне решить мою проблему. Ссылки на сборку-худшие ... поэтому я думал, что опубликую шаги, которые я предпринял, а также некоторые вещи, которые я узнал, и, надеюсь, это поможет:
-
НЕУДАЧНАЯ ПОПЫТКА: вставил следующие строки в my
web.config
:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/> <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/> </dependentAssembly> </assemblyBinding> </runtime>
^^^^^ НЕ Работа
-
устранение: переход
~/Bin/Newtonsoft.Json.dll
, и открыл файл в Visual Studio. По умолчанию в интерфейсе файла отображается папка названный в честь сборки-я дважды щелкнул по нему, чтобы развернуть, и в конце концов увидел это: затем я дважды щелкнул на1 [Neutral]
значок, который привел меня к информации ассамблеи, посмотреть здесь:в строку
Assembly Version
это то, что вам нужно ввести в на<bindingRedirect>
tag. Поэтому я взял раздел обклеил (на один шаг) и изменить "5.0.8" в "6.0.0.0". Мой новый<runtime>
раздел выглядит следующим образом:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/> <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime>
^^^ ^ ^^ ЭТО СРАБОТАЛО!! В конечном счете...
Другие заметки на случай, если кто-то все еще смущен:
- the
<runtime>
тег внутри<configuration></configuration>
тег в сеть.конфиг. В разделе I показано выше была вставлено прямо под открывающим тегом моей паутины.конфигурации . - the
xmlns
атрибут представляет соответствующее пространство имен XML. Это используется разработчиками сборки, чтобы избежать проблем с противоречивые теги. В этом случае вы должны чувствовать себя в безопасности, используяxmlns="schemas-microsoft-com:asm.v1"
перечислены выше. - вы можете изменить дополнительную версии сборки. Например, я, вероятно, отредактирую свой больше похоже на zbarrier по ответ.
- the
publicKeyToken
еще один атрибут, который в значительной степени остается же когда дело доходит до Newtonsoft.формат JSON. PublicKeyToken-это просто сокращенная версия открытого ключа-так же, как заголовок книга...и в этом случае ничего не меняется. Если ты когда-нибудь захочешь ... знайте открытый ключ к сборке, просто откройтеDeveloper Command Prompt
, который можно найти в меню Пуск, затем с помощью командной строки перейдите к расположение файла сборки (в данном случае~\Bin\
), и запустить SN-T assembly_file_name. Итак, в этом случае команда была СН -Т Newtonsoft.формат JSON.dll файлы. Вы должны получить ответ, как это: как вы можете видеть, Newtonsoft public ключ (30ad4fe6b2a6aeed) находится прямо в конце.
я столкнулся с той же проблемой для сборки версии 6.0.1. Я вставил в паутину следующие строки.config как режиссер Гарольд:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
затем я удалил ссылку проекта на Newtonsoft.Json и удалил ссылку на Newtonsoft.Json в пакетах.конфигурационный файл.
Я открыл менеджер Nuget и переустановил Newtonsoft.формат JSON.
установка изменила интернет.настройки конфигурации следующие и все работает нормально:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
сначала я думал, что мой случай был той же самой старой ссылкой на сборку ... удалил, переустановил, принудительно установил, перестроил, добавил сборку перенаправления ...и т. д.
ничего не работало, пока я не узнал, что другая сборка вызывает проблему.
в моем случае мой код не удался, когда я вызвал HttpClient.Метод PostAsJsonAsync (requestURI, T). Ошибка о ссылке на сборку сбросила меня, так как мое решение имеет несколько проектов и в которых некоторые из проекты использовали старую версию... закончилась тратой времени...
мое решение:
- удалены существующей системы.Чистая.Протоколу HTTP.Форматирование из моих ссылок
- установлен установочный пакет Microsoft.сеть САШ.Веб-API.Клиента, который установлен необходимый Http.Форматирование.
после установки PostAsJsonAsync () работал так, как ожидалось!
надеюсь, это сэкономит кому - то время, которое я потерял в поисках решения!
Я столкнулся с той же проблемой, я установил Newtonsoft.Json v9.0.1, sandcastle останавливает построение, отображающее ту же ошибку, но с разницей версий: "Не удалось загрузить файл или сборку" Newtonsoft.Json, Version=6.0.0.0,"
Что сработало: найти / создать проект с newtonsoft.json с версией SandCastle просит, добавить файл " Newtonsoft.формат JSON.dll " в качестве ссылки на проект SC затем построить. (вы можете найти DLL в папке bin проекта)