J'utilise Netonsoft.Json dans mon projet. Cela fonctionne bien jusqu'à ce que je commence à intégrer Paypal SDK dans mon projet. Mon code est comme ci-dessous.
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);
et je reçois une erreur comme ci-dessous
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)
Je recherche sur internet et trouve une solution pour changer le fichier de configuration. SO Je change mon fichier de configuration comme ci-dessous
<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>
Je m'amuse aussi à utiliser des propriétés d'assemblage telles que Copier une version locale ou spécifique mais rien ne m'aide à résoudre ce problème. Comment puis-je résoudre le conflit de l'Assemblée?
Je viens d’avoir le même problème et je l’ai résolu en mettant à jour Newtonsoft.Json avec la dernière version en utilisant
Update-Package Newtonsoft.Json
puis aller à Web.config et ajouter:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
+1 à zbarrier pour sa réponse qui m'a aidé à résoudre mon problème. Les problèmes de référence à l’Assemblée sont les pires… c’est pourquoi j’ai pensé publier les étapes que j’ai prises, ainsi que certaines choses que j’ai apprises, et j'espère que cela aide:
FAILED ATTEMPT: a collé les lignes suivantes dans mon 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>
^^^^^ DID N'A PAS FONCTIONNÉ
SOLUTION: _ a accédé à ~/Bin/Newtonsoft.Json.dll
et a ouvert le fichier dans Visual Studio. Par défaut, l'interface du fichier affiche un dossier Nommé d'après l'Assemblée. J'ai double-cliqué dessus pour l'agrandir, et A finalement vu ceci: Ensuite, j'ai double-cliqué Sur l'icône 1 [Neutral]
qui m'a amené à l'information de l'Assemblée, Vue ici:
La ligne indiquant Assembly Version
correspond à ce que vous devez entrer Dans l'attribut newVersion
de la balise <bindingRedirect>
. Alors j'ai pris La section que j'ai collée (dans la première étape) et changer le "5.0.8" à "6.0.0.0". Ma nouvelle section <runtime>
ressemble à ceci:
<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>
^^^^^ CELA A FONCTIONNÉ !! Finalement...
<runtime>
se trouve dans la balise <configuration></configuration>
dans le fichier web.config. La section que je montre ci-dessus a été collée directement sous la balise d'ouverture de la section <configuration>
de mon web.config.xmlns
représente l'espace de nom XML correspondant . Il est utilisé par les développeurs de Assembly pour éviter les problèmes liés aux balises en conflit. Dans ce cas, vous devriez vous sentir en sécurité en utilisant le xmlns="schemas-Microsoft-com:asm.v1"
ci-dessus.oldVersion
pour transférer des versions supplémentaires de Assembly. Par exemple, je vais probablement modifier le mien en Qui ressemble davantage à la réponse de zbarrier .publicKeyToken
est un autre attribut qui reste à peu près le même Il en va de même pour Newtonsoft.Json. PublicKeyToken est juste une version raccourcie de la clé publique - un peu comme un titre est un livre .__ - et, dans ce cas, ne change pas vraiment. Si vous voulez connaître la clé publique d’un assemblage, ouvrez simplement le Developer Command
Prompt
qui se trouve dans le menu Démarrer, puis utilisez la commande Invite pour accéder à l’emplacement. ~\Bin\
) et exécutez la commande sn -T nom_fichier_assembly. Donc, dans ce cas, la commande était sn -T Newtonsoft.Json.dll. Vous devriez obtenir une réponse du type Ceci: Comme vous pouvez le constater, la clé publique De Newtonsoft (30ad4fe6b2a6aeed) est située juste à la fin.J'ai rencontré le même problème pour Assembly version 6.0.1. J'ai collé les lignes suivantes dans le web.config comme dirigé par Harold:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
J'ai ensuite supprimé la référence du projet à Newtonsoft.Json et la référence à Newtonsoft.Json dans le fichier packages.config.
J'ai ouvert le Nuget Manager et réinstallé Newtonsoft.Json.
L'installation a modifié les paramètres web.config comme suit et tout a bien fonctionné:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Au début, je pensais que mon cas était la même référence d’Assemblée que la précédente.
Rien n'a fonctionné jusqu'à ce que j'ai découvert qu'une autre assemblée posait problème.
Dans mon cas, mon code échouait lorsque j'ai appelé la méthode HttpClient.PostAsJsonAsync (requestURI, T). L'erreur concernant Assembly Reference m'a ébranlé car ma solution comporte plusieurs projets et dans lesquels certains d'entre eux utilisaient une ancienne version ... ont fini par perdre beaucoup de temps jusqu'à ...
Ma solution:
Une fois installé, le PostAsJsonAsync () a fonctionné comme prévu!
J'espère que cela fait gagner du temps à quelqu'un que j'ai perdu à la recherche d'une solution!
J'ai rencontré le même problème, j'ai installé Newtonsoft.Json v9.0.1, sandcastle arrête la construction en affichant la même erreur mais avec une différence de version: "Impossible de charger le fichier ou l'assembly 'Newtonsoft.Json, Version = 6.0.0.0, "
ce qui a fonctionné: recherchez/créez un projet avec newtonsoft.json avec la version demandée par SandCastle, ajoutez le fichier "Newtonsoft.Json.dll" en tant que référence au projet SC, puis générez ..__ (vous pouvez trouver la dll dans le dossier bin du projet)