49 votes

Newtonsoft.Json" a déjà une dépendance définie pour "Microsoft.CSharp".

J'installe NewtonSoft.Json pour analyser Json dans une application .NET. Lorsque j'utilise Visual Studio(VS) 2012, il ne peut pas être installé via NuGet. Voici l'erreur que j'ai obtenue :

'Newtonsoft.Json' already has a dependency defined for 'Microsoft.CSharp'

J'ai essayé de copier la DLL et de l'utiliser, mais il semblerait que certaines dépendances aient échoué dans cette version (10.0.2).

Après quelques heures de recherche, j'ai finalement trouvé qu'il s'agit d'un problème de compatibilité entre VS2012 et Newtonsoft Json 10.0.2.

75voto

Vin.X Points 776

Parce que le gestionnaire de paquets NuGet (version 2.8.60318.667) pour VS 2012 ne prend pas en charge .NETStandard (utilisé pour la dernière librairie Newtonsoft Json Parser Lib. https://github.com/NuGet/Home/issues/3131

Je résous ce problème en installant une ancienne version de Newtonsoft Json :

PM> Install-Package Newtonsoft.Json -Version 9.0.1

Plus de détails sur : https://github.com/NuGet/Home/issues/5162 .

1 votes

Impossible de trouver la version '9.0.1' du paquet 'Newtonsoft.Json'.

2 votes

Après avoir supprimé le dossier Newtonsoft 10.0.3 du répertoire Solution -> package, la commande ci-dessus a fonctionné pour moi.

15voto

Kevin Secrist Points 409

L'installation/restauration des paquets NuGet qui ciblent le standard .NET nécessite NuGet.exe version 3.4+.

Extrait des notes de mise à jour de la version 3.4 : https://docs.microsoft.com/en-us/nuget/release-notes/nuget-3.4

Nouvelles fonctionnalités

  • Prise en charge des monikers de frameworks netstandard et netstandardapp

Cette version de NuGet est fournie avec VS2015 Update 2.

NuGet 3.4 a été publié le 30 mars 2016 dans le cadre de la mise à jour 2 de Visual Studio 2015 et de la version préliminaire de Visual Studio 15.

4voto

user1467813 Points 66

J'ai eu le même problème en utilisant VS2015 et en créant un paquet NuGet avec une dépendance sur Newtonsoft.Json version=10.0.3. J'ai utilisé l'approche suggérée par Vin.X dans sa réponse comme solution de contournement.

Après avoir installé Newtonsoft.Json version=9.0.1 dans votre projet, ajoutez la description suivante dans votre fichier .nuspec.

<dependencies>
      <dependency id="Newtonsoft.Json" version="10.0.3" />
</dependencies>

L'application qui consomme votre paquet installera Newtonsoft.Json version=10.0.3 avec votre paquet comme une dépendance dans votre projet.

3voto

Masood Points 1

Essayez de supprimer la version existante du paquet du répertoire des paquets de la solution et ensuite essayez la commande suivante. Cela a fonctionné pour moi.

    PM> Install-Package Newtonsoft.Json -Version 9.0.1

1 votes

J'ai seulement eu besoin de faire la première étape - supprimer une version différente (plus récente) du paquet du répertoire Solution->packages. Pensez à mettre en évidence cette partie de votre réponse.

-1voto

Gautam Dabhade Points 1

Essayez d'installer Newtonsoft MsgPack, cela installera la DLL Newtonsoft.json dans votre projet.

0 votes

Qu'est-ce que MsgPack ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X