c# visual-studio nuget bcl

c# - instalando el paquete nuget "ya se ha agregado la misma clave".



visual-studio bcl (10)

Acabo de tener exactamente el mismo problema, pero al instalar la última actualización de NuGet Package Manager se resolvió el problema.

Estoy tratando de instalar Microsoft.Bcl.Build 1.0.14

devoluciones de nuget

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.

Esto también sucede con json.net y otros paquetes.

Puedo agregar nancy y topshelf pero no json.net y bcl.

Lo he probado en VS2012 y 2013. También he intentado desinstalar nuget y reinstalar. También he intentado agregar el nuget a una biblioteca de clases vacía y una aplicación de consola vacía. El mismo error siempre se devuelve.

Esto también sucede con json.net y otros paquetes.

También he intentado sin archivo de paquetes

Cualquier idea más apreciada.

Aquí está el comando y 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>


Compruebe sus packages.config Dentro de allí, verifique los paquetes que está intentando instalar. Quizás alguna referencia ya esté ahí y esto evita que puedas instalar los nuevos.

Si encuentra allí las referencias, elimine la referencia de packages.config e intente volver a instalar el paquete.

A veces me ha pasado que dentro de packages.config hay alguna referencia antigua que aún queda allí incluso después de eliminar el paquete del Gestor de paquetes Nuget.

De lo contrario, puede eliminar todos los paquetes.config, luego, si tiene la opción de permitir que Nuget descargue los paquetes, cuando construya su solución, los paquetes se descargarán nuevamente.

espero que esto ayude


Estaba enfrentando el mismo problema mientras construía un proyecto 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)

Se encontró que varios archivos .spec de Nuget estaban presentes en la carpeta bin / Debug.


Esto sucede mucho en el espacio de .Net Core y .Net Standard Portable Class Library. Aunque no he rastreado la verdadera raíz del problema, parece suceder más cuando modifico directamente la sección de dependencias de project.json con paquetes que tienen muchas otras dependencias externas (que tienen términos asociados con ellos).

Si puede identificar la biblioteca responsable, eliminar todas las dependencias y usar la herramienta de administración de paquetes de nuget adecuada para agregar los paquetes. No es raro tener que eliminar y volver a crear el CLI completamente.


Hay otro camino que produce este error. Aquí está cómo reproducirlo:

(1) Cree un paquete nuget a partir de un proyecto VS (proyecto 1).
(2) En el proyecto 2 que hace referencia al proyecto 1, instale el paquete nuget del proyecto 1.
(3) la instalación fallará con el error "misma clave".

La solución es simplemente eliminar la referencia al proyecto 1 antes de instalar el paquete nuget.


Parece que NuGet está encontrando un perfil duplicado de Portable Class Library (PCL) en su máquina. Es una pena que la clave no esté registrada en la excepción de la pila de llamadas, lo que facilitaría las cosas.

Puede probar el programa PclPal Jon Skeet, que puede enumerar los perfiles PCL y ver si hay algo duplicado.

Tengo otro programa MonoPcl que hace algo similar. Se refiere a Mono pero funciona en Windows. Utiliza el código fuente de NuGet para que tenga el mismo problema que está viendo en Visual Studio. Sin embargo, debería poder modificar el código para detectar la excepción o agregar un registro adicional para ver cuál es el perfil PCL duplicado que está causando el problema.


Simplemente actualice el administrador de paquetes de Nuget en herramientas - extensión y actualizaciones - actualizaciones - galería de estudio visual - actualice el administrador de paquetes de Nuget


Su seguimiento de pila cuenta la historia, es NuGet.NetPortableProfileTable.BuildPortableProfileCollection() que falla. En pocas palabras, itera el conjunto de perfiles de ensamblaje de referencia PCL y encuentra el mismo perfil más de una vez. Esta es una sugerencia muy clara de que el contenido de su directorio c:/program files (x86)/reference assemblies/microsoft/framework/.netportable está dañado.

Hay muchas formas posibles de arreglar el daño:

  • Si tiene un recuerdo activo de modificaciones en este directorio, como copiar archivos, deshaga lo que hizo.
  • La forma más segura de hacerlo es desinstalar todas las versiones de Visual Studio> = VS2010. Luego limpie el directorio a mano, eliminando los archivos extraviados que todavía estén presentes. Luego reinstalar VS de nuevo.
  • La forma no tan segura pero más rápida es cambiar el nombre del directorio c: / program files (x86) / reference assemblies e instalar el paquete de objetivos múltiples . No puedo prometer el éxito.
  • Puedes intentar encontrar el duplicado y eliminarlo. La estructura del directorio se ve así:

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


Tuve el mismo problema al instalar Autofac y Autofac MVC 5 Integration. Resolví este problema usando Manage Nuget Packages en la solución. Desactivé ambos paquetes (Desinstalar), reinicié Visual Studio y reinstalé el paquete correctamente.


Vaya a su directorio de packages y elimine todas las versiones del paquete que ya no necesita.

A continuación, intente instalar la versión correcta. Creo que es mirar todas las carpetas en ese directorio y tratar de agregarlas a algún tipo de diccionario / hashset y encontrar dos.