2014-06-26 11 views
20

próbuję zainstalować Microsoft.Bcl.Build 1.0.14instalowanie pakietu nuget "ten sam klucz został już dodany."

Nuget zwraca

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. 

Dzieje się tak również z Json.NET i innych opakowań.

Mogę dodać nancy i górną półkę, ale nie json.net i bcl.

Próbowałem go w VS2012 i 2013. Próbowałem również odinstalować nuget i reinstalacji. Próbowałem również dodać nuget do pustej biblioteki klas i pustej aplikacji konsolowej. Ten sam błąd jest zawsze zwracany.

Tak samo dzieje się z json.net i innymi pakietami.

Próbowałem również z sygn pakiety

jakieś pomysły najbardziej doceniane.

Oto komenda i 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> 
+0

Czy próbowałeś usunąć wpis w pliku package.config? – christof13

+0

tak i wypróbowane bez pliku pakietów. Zaktualizowałem pytanie. – Jules

+1

Spróbuj zainstalować pakiet NuGet z okna konsoli menedżera pakietów. Wtedy powinieneś być w stanie zobaczyć pełną listę wyjątków od błędu, jeśli uruchomisz "$ error [0] .exception.stacktrace" po nieudanej instalacji. To może dać nam lepszą wskazówkę, dlaczego i gdzie to się nie udaje. –

Odpowiedz

10

Twój ślad stosu opowiada historię, to jest błąd NuGet.NetPortableProfileTable.BuildPortableProfileCollection(). W skrócie, iteruje zestaw profili referencyjnych PCL i napotyka ten sam profil więcej niż jeden raz. Jest to bardzo mocna wskazówka, że ​​zawartość twojego katalogu c:\program files (x86)\reference assemblies\microsoft\framework\.netportable jest uszkodzona.

Istnieje wiele możliwych sposobów, aby przejść o ustalenie szkody:

  • Jeśli masz aktywną pamięta majstrować przy tym katalogu, jak kopiowanie plików, a następnie cofnąć tego, co zrobiłeś.
  • Najbezpieczniejszym sposobem rozwiązania tego problemu jest odinstalowanie wszystkich wersji Visual Studio> = VS2010. Następnie ręcznie uporządkuj katalog, usuwając wszystkie niepotrzebne pliki, które są nadal obecne. Następnie ponownie zainstaluj VS.
  • Nie tak bezpieczny, ale szybszy sposób polega na zmianie nazwy katalogu c: \ program files (x86) \ reference assemblies i zainstalowaniu multi-targeting pack. Nie mogę obiecać sukcesu.
  • Możesz spróbować znaleźć duplikat samodzielnie i usunąć go.Struktura katalogów wygląda następująco:

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 
4

Wygląda Nuget jest znalezienie duplikatów Portable Class Library (PCL) profil na komputerze. To wstyd, że klucz nie jest zalogowany w stoliku wyjątków, co ułatwiłoby to.

Możesz wypróbować program Jona Skeeta o nazwie PclPal, który może wyświetlić listę profili PCL i sprawdzić, czy coś się zduplikowało.

Mam inny MonoPcl program, który robi podobnie. Odnosi się do Mono, ale działa w systemie Windows. Używa kodu źródłowego NuGet, więc będzie miał ten sam problem, co w Visual Studio. Jednak powinieneś być w stanie modify the code wychwycić wyjątek lub wprowadzić dodatkowe rejestrowanie, aby zobaczyć, co jest przyczyną problemu z duplikatem profilu PCL.

+0

Dzięki programowi MonoPcl pomógł mi! – AstralisSomnium

16

Sprawdź packages.config Wewnątrz, sprawdź dla pakietów, które próbujesz zainstalować. Może jakieś referencje już tam są, a to pozwala uniknąć instalacji nowych.

Jeśli znajdziesz tam odniesienia, usuń odwołanie z pliku packages.config i spróbuj zainstalować ponownie pakiet.

Zdarzyło mi się czasami, że wewnątrz pliku packages.config znajduje się jakiś stary odnośnik, który wciąż istnieje, nawet po usunięciu pakietu z Menedżera pakietów Nuget.

Jeśli nie, możesz usunąć cały pakiet packages.config, a jeśli masz możliwość, aby Nuget pobrał pakiety, po zbudowaniu rozwiązania pakiety zostaną pobrane ponownie.

Mam nadzieję, że to pomoże

+1

uff. Cieszę się, że to rozwiązało mój problem i nie musiałem uciekać się do całej zabawy, jaką wszyscy ludzie mają do zrobienia z odpowiedzią @Hansa! – GraehamF

+0

+1 Może się to łatwo zdarzyć, jeśli ręcznie edytujesz 'packages.config' - NuGet odmówi pracy z projektem, który ma zduplikowane wpisy dla tego samego zestawu. – StuartLC

+0

Tak, miałem 2 pakiety w package.config z tym samym identyfikatorem, ale z różnymi numerami wersji. Zachowałem więc najnowszą wersję i usunąłem starszą wersję, a następnie zadziałało. – arame3333

3

Przejdź do katalogu packages i usunąć wszystkie wersje pakietu nie trzeba więcej.

Następnie spróbuj zainstalować poprawną wersję. Myślę, że patrzy na wszystkie foldery w tym katalogu i próbuje je dodać do jakiegoś słownika/hashsetu i znaleźć dwa.

0

Miałem ten sam problem z instalacją Autofac i Autofac MVC 5 Integration. Rozwiązałem ten problem, używając pakietów Manage Nuget w rozwiązaniu, odznaczono oba pakiety (odinstaluj), zrestartowałem Visual Studio i pomyślnie przeinstalowałem pakiet.

0

Po prostu miałem ten sam problem, ale zainstalowanie najnowszej aktualizacji dla NuGet Package Manager rozwiązało problem.

3

Wystarczy aktualizacja menedżer pakietów Nuget w narzędzia - rozszerzenia i aktualizacje - Aktualizacje --visual galeria studio --update Nuget menedżer pakietów

+0

Dziękuję za prostą odpowiedź! – Jahan

+0

To działało również dla mnie. Odinstalowałem nuget (ponieważ nie było aktualizacji) i zainstalowałem go ponownie. To była jedyna rzecz, która zadziałała dla mnie. –

0

byłem stoi ten sam problem podczas budynku projekt w do#.

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) 

Znaleziono wiele plików .spec Nuget w folderze bin \ Debug.

0

To się często dzieje w przestrzeni biblioteki .NET Core i .Net Standard Portable Class Library. Nawet jeśli nie wyśledziłem prawdziwego źródła problemu, wydaje się, że najbardziej się to dzieje, kiedy bezpośrednio modyfikuję sekcję zależności project.json w pakietach, które mają wiele innych zewnętrznych zależności (które mają z nimi powiązane terminy).

Jeśli możesz zidentyfikować bibliotekę odpowiedzialną i usunąć wszystkie zależności i użyć odpowiedniego narzędzia do zarządzania pakietami Nuget, aby dodać pakiety. Często zdarza się, że musisz całkowicie usunąć i ponownie utworzyć CLI!

Powiązane problemy