Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

installing nuget package "same key has already been added."

i am trying to install Microsoft.Bcl.Build 1.0.14

nuget returns

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. 

This also happens with json.net and other packages.

I can add nancy and topshelf but not json.net and bcl.

I have tried it in VS2012 and 2013. I have also tried uninstalling nuget and reinstalling. I have also tried adding the nuget to an empty class library and an empty console app. The same error is always returned.

This also happens with json.net and other packages.

I have also tried with no packages file

Any ideas most appreciated.

Here is the command and 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> 
like image 322
Jules Avatar asked Jun 26 '14 11:06

Jules


People also ask

How do I force a NuGet package to reinstall?

Switch to the Browse tab, search for the package name, select it, then select Install). For all packages, delete the package folder, then run nuget install . For a single package, delete the package folder and use nuget install <id> to reinstall the same one.

What happens when a NuGet package is Installed?

NuGet creates a subfolder for each package identifier, then creates subfolders for each installed version of the package. NuGet installs package dependencies as required. This process might update package versions in the process, as described in Dependency Resolution.

How do I reinstall NuGet packages in Visual Studio 2019?

Restore packages manually using Visual StudioEnable package restore by choosing Tools > Options > NuGet Package Manager. Under Package Restore options, select Allow NuGet to download missing packages. In Solution Explorer, right click the solution and select Restore NuGet Packages.


2 Answers

Check your packages.config Inside there, check for the packages you are trying to install. Maybe some reference are already there and this avoid that you can install the new ones.

If you find there the references, delete the reference from the packages.config and try to install again the package.

It happened to me sometimes that inside packages.config are some old reference that still left there even after removing the package from the Nuget Package Manager.

If not, you can delete the entire packages.config, then if you have the option to let Nuget download the packages, when you build your solution, the packages will be downloaded again.

I hope this helps

like image 153
Oscar Bralo Avatar answered Sep 18 '22 09:09

Oscar Bralo


Your stack-trace tells the tale, it is NuGet.NetPortableProfileTable.BuildPortableProfileCollection() that fails. In a nutshell, it iterates the set of PCL reference assembly profiles and encounters the same profile more than once. This is a very strong hint that the content of your c:\program files (x86)\reference assemblies\microsoft\framework\.netportable directory is corrupted.

There are many possible ways to go about fixing the damage:

  • If you have an active recollection of tinkering with this directory, like copying files, then undo what you did.
  • Safest way to go about it is to uninstall all Visual Studio versions >= VS2010. Then clean up the directory by hand, deleting any stray files that are still present. Then reinstalling VS again.
  • The not-so-safe but speedier way is to rename the c:\program files (x86)\reference assemblies directory and install the multi-targeting pack. I can't promise success.
  • You can try to find the duplicate yourself and remove it. The directory structure looks like this:

 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 
like image 42
Hans Passant Avatar answered Sep 19 '22 09:09

Hans Passant