при установке пакета nuget такой же ключ уже был добавлен.

я пытаюсь установить Microsoft.Bcl.Build 1.0.14

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.

То же самое происходит с json.net и другими пакетами.

Я могу добавить nancy и topshelf, но не json.net и bcl.

Я пробовал это в VS2012 и 2013. Я также пробовал удалить nuget и переустановить. Я также попытался добавить nuget в пустую библиотеку классов и пустое консольное приложение. Всегда возвращается одна и та же ошибка.

То же самое происходит с json.net и другими пакетами.

Я также пробовал без файла пакетов

Любые идеи приветствуются.

Вот команда и трассировка стека

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>

person Jules    schedule 26.06.2014    source источник
comment
Вы пробовали удалить запись в файле package.config?   -  person christof13    schedule 26.06.2014
comment
да и пробовал без файла пакетов. Я обновил вопрос.   -  person Jules    schedule 26.06.2014
comment
Попробуйте установить пакет NuGet из окна консоли диспетчера пакетов. Тогда вы сможете увидеть полный стек вызовов исключения ошибки, если вы запустите $ error [0] .exception.stacktrace после сбоя установки. Это может дать нам лучшее представление о том, почему и где он терпит неудачу.   -  person Matt Ward    schedule 27.06.2014
comment
спасибо, добавили трассировку стека в вопрос   -  person Jules    schedule 27.06.2014
comment
Об ошибке сообщили в NuGet github.com/NuGet/Home/issues/2464   -  person Colonel Panic    schedule 06.04.2016


Ответы (12)


Ваша трассировка стека рассказывает историю, это NuGet.NetPortableProfileTable.BuildPortableProfileCollection() терпит неудачу. Короче говоря, он повторяет набор эталонных профилей сборки PCL и встречает один и тот же профиль более одного раза. Это очень сильный намек на то, что содержимое вашего c:\program files (x86)\reference assemblies\microsoft\framework\.netportable каталога повреждено.

Есть много возможных способов исправить повреждение:

  • Если у вас есть активные воспоминания о том, как вы возились с этим каталогом, например, копировали файлы, то отмените то, что вы сделали.
  • Самый безопасный способ сделать это - удалить все версии Visual Studio> = VS2010. Затем очистите каталог вручную, удалив все оставшиеся ненужные файлы. Затем снова переустановите VS.
  • Не очень безопасный, но более быстрый способ - это переименовать каталог c: \ program files (x86) \ reference assemblies и установить пакет множественного таргетинга. Я не могу обещать успеха.
  • Вы можете попробовать найти дубликат самостоятельно и удалить его. Структура каталогов выглядит так:

 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
person Hans Passant    schedule 20.07.2014

Проверьте там свой packages.config Внутри, проверьте пакеты, которые вы пытаетесь установить. Возможно, некоторые ссылки уже есть, и это поможет избежать установки новых.

Если вы найдете там ссылки, удалите ссылку из файла packages.config и попробуйте снова установить пакет.

Иногда со мной случалось, что внутри packages.config есть какая-то старая ссылка, которая все еще осталась там даже после удаления пакета из диспетчера пакетов Nuget.

В противном случае вы можете удалить весь файл packages.config, а затем, если у вас есть возможность разрешить Nuget загружать пакеты, при сборке решения пакеты будут загружены снова.

надеюсь, это поможет

person Oscar Bralo    schedule 20.07.2014
comment
уф. так рад, что это решило мою проблему, и мне не пришлось прибегать ко всем развлечениям, которые имеют отношение к ответу @Hans! - person GraehamF; 16.07.2016
comment
+1 Это легко может произойти, если вы вручную отредактируете packages.config - NuGet откажется работать с проектом, в котором есть повторяющиеся записи для одной и той же сборки. - person StuartLC; 28.12.2016
comment
Да, у меня было 2 пакета в package.config с одинаковым идентификатором, но с разными номерами версий. Поэтому я сохранил последнюю версию и удалил старую, и тогда все заработало. - person arame3333; 21.07.2017

Похоже, NuGet находит на вашем компьютере дубликат профиля Portable Class Library (PCL). Жаль, что ключ не зарегистрирован в стеке вызовов исключений, что упростило бы задачу.

Вы можете попробовать программу Джона Скита PclPal, которая может составить список профилей PCL и посмотреть, нет ли дубликатов.

У меня есть другая программа MonoPcl, которая делает то же самое. Это относится к Mono, но работает в Windows. Он использует исходный код NuGet, поэтому у него будет та же проблема, что и в Visual Studio. Однако вы должны иметь возможность изменить код, чтобы перехватить исключение, или добавить дополнительный журнал, чтобы узнать, какой дублированный профиль PCL вызывает проблему.

person Matt Ward    schedule 27.06.2014
comment
Спасибо, ваша программа MonoPcl мне помогла !! - person Patrick; 22.04.2016

Есть еще один путь, вызывающий эту ошибку. Вот как это воспроизвести:

(1) Создайте пакет nuget из проекта VS (проект 1).
(2) В проекте 2, который ссылается на проект 1, установите пакет nuget проекта 1.
(3) установка завершится с ошибкой " тот же ключ "ошибка.

Решение состоит в том, чтобы просто удалить ссылку на проект 1 перед установкой пакета nuget.

person AQuirky    schedule 21.09.2018

Зайдите в свой packages каталог и удалите все версии пакета, которые вам больше не нужны.

Затем попробуйте установить правильную версию. Я думаю, что он просматривает все папки в этом каталоге и пытается добавить их в какой-то словарь / хэш-набор и находит два.

person Simon_Weaver    schedule 02.01.2015

Просто обновите диспетчер пакетов Nuget в инструментах - расширении и обновлениях - обновлениях - галерее Visual Studio - обновите диспетчер пакетов Nuget

person Amit Çhâühañ    schedule 29.06.2016
comment
Спасибо за простой ответ! - person Said Roohullah Allem; 02.01.2017
comment
У меня это тоже сработало. Я удалил nuget (потому что не было обновления) и переустановил его. Это единственное, что у меня сработало. - person Eli Gassert; 01.09.2017

У меня была точно такая же проблема, но установка последнего обновления для диспетчера пакетов NuGet решила проблему.

person KasperT    schedule 16.10.2015

У меня была такая же проблема с установкой Autofac и Autofac MVC 5 Integration. Я решил эту проблему с помощью «Управление пакетами Nuget» в решении, снял флажки с обоих пакетов («Удалить»), перезапустил Visual Studio и успешно переустановил пакет.

person rpou0830    schedule 13.05.2015

В моем случае я запустил dotnet restore из консоли диспетчера пакетов, чтобы получить дублированный ключ.

PM> dotnet restore
  Determining projects to restore...
C:\Program Files\dotnet\sdk\3.1.300\NuGet.targets(128,5): error : An item with the same key has already been added. Key: (XXXX.XXX.XX, 1.0.0.0-preview1) [C:\code\MySolution.sln]
person bigpony    schedule 06.08.2020

Я столкнулся с той же проблемой при создании проекта на 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)

Обнаружено, что в папке bin \ Debug присутствует несколько файлов Nuget .spec.

person user3048212    schedule 07.11.2016

Это часто случается в пространстве .Net Core и .Net Standard Portable Class Library. Несмотря на то, что я не проследил истинный корень проблемы, это чаще всего происходит, когда я напрямую изменяю раздел зависимостей project.json пакетами, которые имеют множество других внешних зависимостей (с которыми связаны термины).

Если вы можете определить ответственную библиотеку, удалить все зависимости и использовать соответствующий инструмент управления пакетами nuget для добавления пакетов. Нередко приходится полностью удалять и воссоздавать интерфейс командной строки!

person Sarel Esterhuizen    schedule 29.12.2016

У меня была аналогичная проблема. Это было исправлено, когда я удалил повторяющиеся элементы PackageReference с указанным пакетом в файле проекта .csproj с помощью блокнота.

person elamaunt    schedule 23.04.2019