Comment puis-je réparer assemblée des conflits de version avec JSON.NET après la mise à jour de package NuGet références dans une nouvelle ASP.NET MVC 5 projet?
J'ai créé un nouveau ASP.NET MVC 5 projet web en VS 2013 (mise à Jour 1), puis mis à jour tous les packages NuGet. Quand j'ai construit la projet, j'obtiens le message d'avertissement suivant:
avertissement MSB3243: Pas moyen de résoudre les conflits entre les "Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" et "Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".
Quand j'ai vérifier sur le web.config, cependant, je ne vois qu'une liaison de redirection 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>
Qui est exactement ce que l'avertissement conseille.
Comment puis-je corriger cet avertissement?
- Oui, j'ai fait une reconstruction complète. J'ai aussi mis à jour NuGet à la dernière, a créé une nouvelle solution et reproduit exactement le même problème.
Vous devez vous connecter pour publier un commentaire.
Ici les étapes que j'ai utilisé pour fixer l'attention:
install.ps1
Newtonsoft.Json 11.0.1
. Et il a fixé l'erreur. Notez également que je suis à l'aide de Visual Studio Community 2017.J'ai eu ce problème parce que j'ai mis à jour les paquets, ce qui inclus Microsoft.AspNet.WebApi qui a une référence à Newtonsoft.Json 4.5.6 et j'ai déjà eu la version 6 est installé. Il n'était pas assez intelligent pour utiliser la version 6.
Pour le résoudre, après la WebApi mise à jour j'ai ouvert les Outils > Gestionnaire de Package NuGet > Gestionnaire de Paquet de la Console et a couru:
Le journal a montré que la 6.0.x et 4.5.6 versions ont tous été mis à jour pour la dernière et que tout allait bien.
J'ai le sentiment que cela viendra de nouveau.
J'ai trouvé pour supprimer cette section du fichier de projet corriger le problème.
Si aucun des travaux ci-dessus, essayez d'utiliser ce web.config ou app.config:
La solution finale à votre assemblée de rediriger les erreurs
Bon, j'espère que cela devrait vous aider à résoudre tout (sane) référence de l'assemblage des écarts ...
Se réjouir.
Rappelez-vous que avec la liaison de redirection
Vous dites que les anciennes versions de dll sont entre la version 0.0.0.0 et la version 6.0.0.0.
oldVersion
est un peu de l'abus de langage ici, en fait, ce que vous dites, c'est que votre assemblée/exe a été construit avec une référence à une version dans la gamme0.0.0.0-6.0.0.0
et que le fait installé (et de préférence) est la version de la valeur sousnewVersion
(ancienne version serait mieux rédigé comme "prévu" version et la nouvelle version serait mieux rédigé comme la "version")J'ai mis à niveau à partir de Newtonsoft.Json 11.0.1 à 12.0.2. Ouvrir le fichier de projet dans Notepad++, j'ai découvert
et
J'ai supprimé le ItemGroup emballage de la référence à l'indice chemin d'accès à la version 11.0.1.
Ces questions peut être incroyablement frustrant pour les trouver. De plus, les développeurs suivent souvent les mêmes étapes que le précédent projet de configurations. L'avant configurations de ne pas rencontrer le problème. Pour quelque raison que ce soit le fichier de projet est parfois mise à jour incorrecte.
J'ai désespérément souhait de Microsoft de corriger ces visual studio l'enfer des DLL questions de popping up. Il arrive beaucoup trop souvent et de causer des progrès à cri à l'arrêt jusqu'à ce qu'il est fixe, souvent par essais et erreurs.
J'ai eu le même problème et je voulais juste poster une réponse pour les autres dans ma situation.
J'ai une solution en cours d'exécution d'un ASP.NET Application Web avec plusieurs autres de classe C# lib projets.
Mon ASP.NET Application Web n'était pas à l'aide de json, mais d'autres projets où.
C'est la façon dont je l'ai corrigé:
L'étape 2 a été tout d'abord l'ajout d'une information de configuration json, qui suggèrent que tous les projets, l'utilisation de la dernière version (6) n'importe quelle version ils ont. L'ajout de l'assemblée de liaison sur le Web.La Config est plus probable de les corriger.
Toutefois, l'étape 2 aussi nettoyé som code de legs. Il s'est avéré que nous avons déjà utilisé une ancienne version (5) de json dans notre Application Web et la NuGet dossiers n'a pas été supprimé lors de la référence (je soupçonne: manuellement) supprimé. L'ajout de la dernière json (6), enlevé les anciens dossiers json (v5). Ce pourrait être une partie de la correction.
J'ai mis à jour mon colis et même réinstallé mais j'étais encore exactement la même erreur que les OP mentionné. J'ai modifié manuellement référencé dans la dll en procédant comme suit.
J'ai enlevé le newtonsoft.json.dll de mon de référence, puis supprimé manuellement le .dll à partir de la corbeille directoy. Ensuite, j'ai copié manuellement l'newtonsoft.json.dll à partir du package nuget dossier dans le projet de la corbeille, puis ajout de la référence par la navigation à l' .dll fichier.
Maintenant, mon projet s'appuie de nouveau.
Personne n'a mentionné la suivante, ce qui à mon sens est la bonne solution:
Aller le csproj du projet où la nuget est installé, et de définir la
AutoGEneratedBindingRedirects
àfalse
.<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
Article complet dans MSDN.