J'ai créé un nouveau projet Web ASP.NET MVC 5 dans VS 2013 (mise à jour 1), puis mis à jour tous les packages NuGet. Lorsque je construis le projet, j'obtiens l'avertissement suivant:
avertissement MSB3243: aucun moyen de résoudre le conflit entre "Newtonsoft.Json, Version = 6.0.0.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed" et "Newtonsoft.Json, Version = 4.5.0.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed".
Lorsque je vérifie le web.config, cependant, je vois qu'une redirection de liaison est en place:
<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>
C'est exactement ce que conseille l'avertissement.
Comment puis-je corriger cet avertissement?
Réponses:
Voici les étapes que j'ai utilisées pour corriger l'avertissement:
la source
install.ps1
J'ai eu ce problème parce que j'ai mis à jour des packages, qui comprenaient Microsoft.AspNet.WebApi qui a une référence à Newtonsoft.Json 4.5.6 et j'avais déjà la version 6 installée. Ce n'était pas assez intelligent pour utiliser la version 6.
Pour le résoudre, après la mise à jour de WebApi, j'ai ouvert les outils> NuGet Package Manager> Pacakge Manager Console et exécuté:
Le journal a montré que les versions 6.0.x et 4.5.6 étaient toutes mises à jour vers la dernière version et que tout allait bien.
J'ai le sentiment que cela reviendra.
la source
J'ai trouvé de supprimer cette section du fichier de projet pour résoudre le problème.
la source
Si aucune des solutions ci-dessus ne fonctionne, essayez de l'utiliser dans web.config ou app.config:
la source
Je suis passé de Newtonsoft.Json 11.0.1 à 12.0.2. En ouvrant le fichier de projet dans Notepad ++, j'ai découvert les deux
et
J'ai supprimé le ItemGroup enveloppant la référence avec le chemin d'indication vers la version 11.0.1.
Ces problèmes peuvent être extrêmement frustrants à trouver. De plus, les développeurs suivent souvent les mêmes étapes que les configurations de projet précédentes. Les configurations précédentes n'ont pas rencontré le problème. Pour une raison quelconque, le fichier de projet est parfois mis à jour de manière incorrecte.
Je souhaite désespérément que Microsoft corrige ces problèmes d'enfer de DLL de Visual Studio. Cela arrive trop souvent et stoppe la progression jusqu'à ce qu'elle soit corrigée, souvent par essais et erreurs.
la source
La solution finale à vos erreurs de redirection d'assemblage
D'accord, j'espère que cela devrait aider à résoudre les écarts de référence d'assemblage (sains) ...
Réjouir.
la source
N'oubliez pas qu'avec la redirection de liaison
Vous dites que les anciennes versions de la DLL sont entre la version 0.0.0.0 et la version 6.0.0.0.
la source
oldVersion
est un peu inapproprié ici en fait, ce que vous dites, c'est que votre assembly / exe a été construit avec une référence à une version de la gamme0.0.0.0-6.0.0.0
et que la version réellement installée (et préférée) est la valeur sousnewVersion
(l'ancienne version serait mieux formulée comme "version attendue" et la nouvelle version seraient mieux formulées comme "version réelle disponible")Personne n'a mentionné ce qui suit, ce qui, à mon avis, est la bonne solution:
Accédez au csproj du projet où le nuget est installé et définissez le
AutoGEneratedBindingRedirects
surfalse
.<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
Article complet dans MSDN.
la source
J'ai mis à jour mon package et je l'ai même réinstallé - mais j'obtenais toujours exactement la même erreur que l'OP mentionné. J'ai modifié manuellement la DLL référencée en procédant comme suit.
J'ai supprimé le newtonsoft.json.dll de ma référence, puis supprimé manuellement le .dll du bin directoy. Ensuite, j'ai copié manuellement le newtonsoft.json.dll du dossier du package nuget dans le bac du projet, puis j'ai ajouté la référence en accédant au fichier .dll.
Maintenant, mon projet se reconstruit.
la source
J'ai eu un problème similaire et je voulais juste publier une réponse pour les autres dans ma situation.
J'ai une solution exécutant une application Web ASP.NET avec plusieurs autres projets de bibliothèque de classe C #.
Mon application Web ASP.NET n'utilisait pas json, mais d'autres projets où.
Voici comment je l'ai corrigé:
L'étape 2 consistait tout d'abord à ajouter des informations de configuration pour json, qui suggèrent que tous les projets utilisent la dernière version (6) quelle que soit la version dont ils disposent. L'ajout de la liaison d'assembly à Web.Config est probablement le correctif.
Cependant, l'étape 2 a également nettoyé un certain code hérité. Il s'est avéré que nous avions précédemment utilisé une ancienne version (5) de json dans notre application Web et que les dossiers NuGet n'étaient pas supprimés lorsque la référence était (je suppose: manuellement) supprimée. Ajout du dernier json (6), suppression des anciens dossiers (json v5). Cela pourrait également faire partie du correctif.
la source
Veverke a mentionné qu'il est possible de désactiver la génération de redirections de liaison en définissant AutoGEneratedBindingRedirects sur false. Je ne sais pas si c'est une nouveauté depuis que cette question a été publiée, mais il existe une option "Ignorer l'application des redirections de liaison" dans Outils / Options / Nuget Packet Manager, qui peut être basculée. Par défaut, il est désactivé, ce qui signifie que les redirections seront appliquées. Cependant, si vous faites cela, vous devrez gérer manuellement les redirections de liaison nécessaires.
la source