web-dev-qa-db-fra.com

installation du package Nuget "La même clé a déjà été ajoutée"

j'essaie d'installer Microsoft.Bcl.Build 1.0.14

retour de la pépite 

Installing 'Microsoft.Bcl.Build 1.0.14'. Successfully installed 'Microsoft.Bcl.Build 1.0.14'. Adding 'Microsoft.Bcl.Build 1.0.14' to LeadTracker.Calendar. Uninstalling 'Microsoft.Bcl.Build 1.0.14'. Successfully uninstalled 'Microsoft.Bcl.Build 1.0.14'. Install failed. Rolling back... An item with the same key has already been added.

Cela se produit également avec json.net et d'autres packages.

Je peux ajouter nancy et topshelf mais pas json.net et bcl.

Je l'ai essayé dans VS2012 et 2013. J'ai également essayé de désinstaller Nuget et de le réinstaller. J'ai également essayé d'ajouter le nuget à une bibliothèque de classe vide et à une application de console vide. La même erreur est toujours renvoyée.

Cela se produit également avec json.net et d'autres packages.

J'ai aussi essayé sans fichier de paquets

Toutes les idées les plus appréciées.

Voici la commande et stacktrace

PM> Install-Package Microsoft.Bcl.Build Installing 'Microsoft.Bcl.Build 1.0.14'. You are downloading Microsoft.Bcl.Build from Microsoft, the license agreement to which is available at http://go.Microsoft.com/fwlink/?LinkId=329770. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device. Successfully installed 'Microsoft.Bcl.Build 1.0.14'. Adding 'Microsoft.Bcl.Build 1.0.14' to GoogleCalendarIntegration. Uninstalling 'Microsoft.Bcl.Build 1.0.14'. Successfully uninstalled 'Microsoft.Bcl.Build 1.0.14'. Install failed. Rolling back... Install-Package : An item with the same key has already been added. At line:1 char:1
+ Install-Package Microsoft.Bcl.Build
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], ArgumentException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPac     kageCommand   PM> $error[0].exception.stacktrace    at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)  at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)    at System.Collections.ObjectModel.KeyedCollection`2.AddKey(TKey key, TItem item)    at System.Collections.ObjectModel.KeyedCollection`2.InsertItem(Int32 index, TItem item)    at System.Collections.ObjectModel.Collection`1.Add(T item)    at NuGet.CollectionExtensions.AddRange[T](ICollection`1 collection, IEnumerable`1 items)    at NuGet.NetPortableProfileTable.BuildPortableProfileCollection()    at NuGet.NetPortableProfileTable.get_Profiles()    at NuGet.NetPortableProfileTable.GetProfile(String profileName)    at NuGet.NetPortableProfile.Parse(String profileValue, Boolean treatOptionalFrameworksAsSuppor tedFrameworks)    at NuGet.VersionUtility.IsPortableLibraryCompatible(FrameworkName projectFrameworkName, Framew orkName packageTargetFrameworkName)    at NuGet.VersionUtility.IsCompatible(FrameworkName projectFrameworkName, FrameworkName package TargetFrameworkName)    at NuGet.VersionUtility.<>c__DisplayClass8`1.<TryGetCompatibleItems>b__15(IGrouping`2 g)    at System.Linq.Enumerable.WhereListIterator`1.MoveNext()    at System.Linq.Buffer`1..ctor(IEnumerable`1 source)    at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext()    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)   at NuGet.VersionUtility.TryGetCompatibleItems[T](FrameworkName projectFramework, IEnumerable`1  items, IEnumerable`1& compatibleItems)    at NuGet.ProjectSystemExtensions.GetCompatibleItemsCore[T](IProjectSystem projectSystem, IEnum erable`1 items)    at NuGet.ProjectManager.ExtractPackageFilesToProject(IPackage package)    at NuGet.ProjectManager.AddPackageReferenceToProject(IPackage package) at NuGet.ProjectManager.Execute(PackageOperation operation)    at NuGet.ProjectManager.Execute(IPackage package, IPackageOperationResolver resolver)    at NuGet.ProjectManager.AddPackageReference(IPackage package, Boolean ignoreDependencies, Bool ean allowPrereleaseVersions)    at NuGet.VisualStudio.VsPackageManager.<>c__DisplayClass83.<AddPackageReference>b__85() at NuGet.VisualStudio.VsPackageManager.RunProjectAction(IProjectManager projectManager, Action  action)    at NuGet.VisualStudio.VsPackageManager.AddPackageReference(IProjectManager projectManager, IPa ckage package, Boolean ignoreDependencies, Boolean allowPrereleaseVersions)    at NuGet.VisualStudio.VsPackageManager.<>c__DisplayClass3.<InstallPackage>b__7() at NuGet.VisualStudio.VsPackageManager.RunSolutionAction(Action action)    at NuGet.VisualStudio.VsPackageManager.InstallPackage(IProjectManager projectManager, String p ackageId, SemanticVersion version, Boolean ignoreDependencies, Boolean allowPrereleaseVersions, B oolean skipAssemblyReferences, ILogger logger)    at NuGet.VisualStudio.VsPackageManager.InstallPackage(IProjectManager projectManager, String p ackageId, SemanticVersion version, Boolean ignoreDependencies, Boolean allowPrereleaseVersions, I Logger logger)  at NuGet.PowerShell.Commands.InstallPackageCommand.InstallPackage(IVsPackageManager packageMan ager)    at NuGet.PowerShell.Commands.InstallPackageCommand.ProcessRecordCore()    at NuGet.PowerShell.Commands.NuGetBaseCommand.ProcessRecord() PM>
22
Jules

Votre trace de pile raconte l'histoire, c'est NuGet.NetPortableProfileTable.BuildPortableProfileCollection() qui échoue. En bref, il itère l'ensemble des profils d'assemblage de référence PCL et rencontre le même profil plusieurs fois. Ceci est un indice fort que le contenu de votre répertoire c:\program files (x86)\reference assemblies\Microsoft\framework\.netportable est corrompu.

Il existe de nombreuses façons de réparer les dégâts:

  • Si vous vous souvenez du bricolage de ce répertoire, comme de la copie de fichiers, annulez ce que vous avez fait.
  • Le moyen le plus sûr de s'y prendre est de désinstaller toutes les versions de Visual Studio> = VS2010. Nettoyez ensuite le répertoire à la main, en supprimant tous les fichiers parasites toujours présents. Puis réinstallez VS à nouveau.
  • La méthode la moins dangereuse mais la plus rapide consiste à renommer le répertoire c:\program files (x86)\reference assemblies et à installer le pack de ciblage multiple . Je ne peux pas promettre le succès.
  • Vous pouvez essayer de trouver le doublon vous-même et de le supprimer. La structure du répertoire ressemble à ceci:

 Directory of C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile

05/14/2014  01:01 PM    <DIR>          Profile1
05/14/2014  01:01 PM    <DIR>          Profile102
05/14/2014  01:01 PM    <DIR>          Profile104
05/14/2014  01:01 PM    <DIR>          Profile131
05/14/2014  01:01 PM    <DIR>          Profile136
05/14/2014  01:01 PM    <DIR>          Profile14
05/14/2014  01:01 PM    <DIR>          Profile143
05/14/2014  01:01 PM    <DIR>          Profile147
05/14/2014  01:01 PM    <DIR>          Profile154
05/14/2014  01:01 PM    <DIR>          Profile158
05/14/2014  01:01 PM    <DIR>          Profile18
05/14/2014  01:01 PM    <DIR>          Profile19
05/14/2014  01:01 PM    <DIR>          Profile2
05/14/2014  01:01 PM    <DIR>          Profile225
05/14/2014  01:01 PM    <DIR>          Profile23
05/14/2014  01:01 PM    <DIR>          Profile24
05/14/2014  01:01 PM    <DIR>          Profile240
05/14/2014  01:01 PM    <DIR>          Profile255
05/14/2014  01:01 PM    <DIR>          Profile3
05/14/2014  01:01 PM    <DIR>          Profile328
05/14/2014  01:01 PM    <DIR>          Profile336
05/14/2014  01:01 PM    <DIR>          Profile344
05/14/2014  01:01 PM    <DIR>          Profile36
05/14/2014  01:01 PM    <DIR>          Profile37
05/14/2014  01:01 PM    <DIR>          Profile4
05/14/2014  01:01 PM    <DIR>          Profile41
05/14/2014  01:01 PM    <DIR>          Profile42
05/14/2014  01:01 PM    <DIR>          Profile46
05/14/2014  01:01 PM    <DIR>          Profile47
05/14/2014  01:01 PM    <DIR>          Profile5
05/14/2014  01:01 PM    <DIR>          Profile6
05/14/2014  01:01 PM    <DIR>          Profile88
05/14/2014  01:01 PM    <DIR>          Profile92
05/14/2014  01:01 PM    <DIR>          Profile95
05/14/2014  01:01 PM    <DIR>          Profile96

 Directory of C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile

05/14/2014  12:59 PM    <DIR>          .
05/14/2014  12:59 PM    <DIR>          ..
05/14/2014  01:01 PM    <DIR>          Profile111
05/14/2014  01:01 PM    <DIR>          Profile259
05/14/2014  01:01 PM    <DIR>          Profile49
05/14/2014  01:01 PM    <DIR>          Profile7
05/14/2014  01:01 PM    <DIR>          Profile78

 Directory of C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.6\Profile

05/14/2014  12:59 PM    <DIR>          .
05/14/2014  12:59 PM    <DIR>          ..
05/14/2014  01:01 PM    <DIR>          Profile151
05/14/2014  01:01 PM    <DIR>          Profile157
05/14/2014  01:01 PM    <DIR>          Profile31
05/14/2014  01:01 PM    <DIR>          Profile32
05/14/2014  01:01 PM    <DIR>          Profile44
05/14/2014  01:01 PM    <DIR>          Profile84
10
Hans Passant

Vérifiez votre packages.config À l'intérieur, recherchez les packages que vous essayez d'installer. Peut-être quelques références sont déjà là et cela évite que vous puissiez installer les nouvelles. 

Si vous y trouvez les références, supprimez-la du paquet packages.config et essayez d'installer à nouveau le paquet.

Il m'est arrivé de temps à autre qu'à l'intérieur de packages.config se trouvent d'anciennes références qui sont restées là même après la suppression du paquet du gestionnaire de paquets Nuget. 

Si ce n'est pas le cas, vous pouvez supprimer le package packages.config dans son intégralité. Si vous avez la possibilité de laisser Nuget télécharger les packages, ceux-ci seront téléchargés à nouveau lors de la création de votre solution.

J'espère que ça aide

16
Oscar Bralo

On dirait que NuGet cherche un doublon de profil PCL (Portable Class Library) sur votre machine. Il est dommage que la clé ne soit pas consignée dans la pile d'appels des exceptions, ce qui faciliterait les choses.

Vous pouvez essayer le programme PclPal de Jon Skeet, qui permet de répertorier les profils PCL et de voir s’il ya des doublons.

J'ai un autre programme MonoPcl qui fait la même chose. Il fait référence à Mono mais fonctionne sous Windows. Il utilise le code source de NuGet, ce qui pose le même problème que dans Visual Studio. Cependant, vous devriez pouvoir modifier le code pour attraper l'exception ou mettre une journalisation supplémentaire pour voir ce que le profil PCL en double est à l'origine du problème.

4
Matt Ward

Juste update le gestionnaire de paquets Nuget dans les outils - extension et mises à jour - mises à jour - galerie de studio visuel - mise à jour du gestionnaire de paquets Nuget

3
Amit Çhâühañ

Allez dans votre répertoire packages et supprimez toutes les versions du paquet dont vous n’avez plus besoin. 

Ensuite, essayez d'installer la version correcte. Je pense qu’il examine tous les dossiers de ce répertoire et tente de les ajouter à une sorte de dictionnaire/hashset et d’en trouver deux.

3
Simon_Weaver

Il y a encore un autre chemin qui produit cette erreur. Voici comment le reproduire:

(1) Créez un paquet de nugets à partir d'un projet VS (projet 1).
(2) Dans le projet 2 qui fait référence au projet 1, installez le package de nuget du projet 1.
(3) l'installation échouera avec l'erreur "same key".

La solution consiste simplement à supprimer la référence au projet 1 avant d'installer le package Nuget.

1
AQuirky

Je viens d'avoir exactement le même problème, mais l'installation de la dernière mise à jour du gestionnaire de paquets NuGet a résolu le problème.

1
KasperT

J'ai eu le même problème lors de l'installation d'Autofac et d'Autofac MVC 5 Integration . J'ai résolu ce problème à l'aide de l'option Gérer les packages de nugets dans la solution, j'ai décoché les deux packages (Désinstaller), redémarré Visual Studio et réinstallé le package.

0
rpou0830

Je faisais face au même problème pendant que Construction un projet en c #.

System.ArgumentException: An item with the same key has already been added.
     at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
     at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
     at System.IO.Packaging.ZipPackage.ContentTypeHelper.ProcessDefaultTagAttributes(XmlTextReader reader)
     at System.IO.Packaging.ZipPackage.ContentTypeHelper.ParseContentTypesFile(ZipFileInfoCollection zipFiles)
     at System.IO.Packaging.ZipPackage.ContentTypeHelper..ctor(ZipArchive zipArchive, IgnoredItemHelper ignoredItemHelper)
     at System.IO.Packaging.ZipPackage..ctor(Stream s, FileMode mode, FileAccess access, Boolean streaming)
     at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess, Boolean streaming)
     at System.IO.Packaging.Package.Open(Stream stream)
     at NuGet.PackageHelper.GetManifestStream(Stream packageStream)
     at NuGet.OptimizedZipPackage.EnsureManifest()
     at NuGet.OptimizedZipPackage..ctor(String fullPackagePath)
     at NuGet.CommandLine.PackCommand.PrintVerbose(String outputPath)
     at NuGet.CommandLine.PackCommand.BuildPackage(PackageBuilder builder, String outputPath)
     at NuGet.CommandLine.PackCommand.BuildFromNuspec(String path)
     at NuGet.CommandLine.PackCommand.BuildPackage(String path)
     at NuGet.CommandLine.PackCommand.ExecuteCommand()
     at NuGet.CommandLine.Command.ExecuteCommandAsync()
     at NuGet.CommandLine.Command.Execute()
     at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args)

Constaté que plusieurs fichiers Nspet .spec étaient présents dans le dossier bin\Debug.

0
user3048212

Cela se produit souvent dans les bibliothèques de classes .Net Core et .Net Standard Portable. Même si je n’ai pas tracé la véritable racine du problème, c’est ce qui se produit le plus lorsque je modifie directement la section des dépendances project.json avec des packages qui comportent de nombreuses autres dépendances externes (auxquelles sont associés des termes).

Si vous pouvez identifier le responsable de la bibliothèque, supprimer toutes les dépendances et utiliser l'outil de gestion de packages de nuget approprié, ajoutez-les Il n'est pas rare de devoir supprimer et recréer complètement la CLI!

0
Sarel Esterhuizen