web-dev-qa-db-fra.com

Un élément avec la même clé a déjà été ajouté lors de l'installation du package NuGet

Dans mon projet, j'utilisais une bibliothèque de classes. Maintenant, j'ai créé cette librairie de classe en tant que package NuGet, supprimez la librairie de classe et lorsque vous essayez d'installer le package, cette erreur apparaît: "Un élément avec la même clé a déjà été ajouté"?

18
user3583415

Dans mon cas, j'ai constaté cette erreur lorsque mon fichier packages.config contenait des ID de package en double, ce qui n'est pas autorisé.

Vous pouvez utiliser le script PowerShell ci-dessous pour rechercher tous les packages en double dans votre solution. Il trouve tous les fichiers packages.config de manière récursive et, fichier par paquet.config, il recherche les ID de package en double.

$solutionFolder = "C:\MySolution"
$nugetPackageFile = "packages.config"

$files = Get-ChildItem -Path $solutionFolder -Filter $nugetPackageFile -Recurse

foreach ($file in $files)
{
    [xml]$xml = Get-Content $file.FullName
    $nodes = Select-Xml "/packages/package/@id" $xml
    $packageIds = @{}

    foreach ($node in $nodes) {
        $packageId = $node.Node.'#text'
        try
        {
            $packageIds.Add($packageId, $packageId)
        }
        Catch [System.ArgumentException]
        {
            Write-Host "Found duplicate package in " $file.FullName ". Duplicate package: $packageId"
        }
    }
}
27
lvmeijer

J'ai eu la même erreur et elle a été corrigée après avoir mis à niveau NuGet lui-même. Utilisez la boîte de dialogue Outils -> «Extensions et mises à jour» pour mettre à jour NuGet.

19
ravinsp

J'ai eu ce problème à plusieurs reprises en récupérant du code d'un autre développeur. Les problèmes mentionnés par d'autres utilisateurs sont certaines des choses que j'ai rencontrées. Voici donc une liste de choses que j'ai faites dans le passé pour résoudre ce problème, ainsi qu'une nouvelle que je viens de découvrir:

  • Redémarrez Visual Studio, NuGet référence parfois les mauvais fichiers pour une raison quelconque (situation et solution très courantes)
  • Mettez à jour NuGet Manager dans Outils> Extensions et mises à jour ... (comme mentionné par @ravinsp)
  • Nettoyez et reconstruisez votre solution. Les anciennes DLL peuvent gâcher les choses (comme mentionné par @Jules)
  • Recherchez des références en double avecDIFFÉRENTESversions dans packages.config - même si vous essayez d'installer un package complètement différent, cette erreur peut être due à un autre problème. J'essayais d'installer OctoPack et j'ai eu cette erreur, mais c'était causé par System.Spatial . Mon packages.config contenait ces deux lignes:

    <package id="System.Spatial" version="5.6.2" targetFramework="net45" />

    <package id="System.Spatial" version="5.6.4" targetFramework="net45" />

9
John

J'ai eu le même problème. Il n'arrêtait pas de me dire qu '"un élément avec la même clé a déjà été ajouté", même s'il ne figurait pas dans mes références ni dans mon packages.configabout.

Finalement, j'ai réussi à résoudre ce problème en affichant tous les fichiers dans Visual Studio. Dans le dossier bin, j'ai ensuite trouvé une référence au .dll que je tentais d'installer via Nuget. Après avoir enlevé celui-là, le problème avait disparu.

Peut-être que cela corrige cela pour vous aussi.

4
Jules

Cela m'a fait passer presque toute la journée. Même problème en essayant d'installer un paquet. Enfin essayé d'installer un autre package avec le même résultat. Il s'avère que TOUTES les duplications dans packages.config (avec des versions différentes) seront à l'origine de cette erreur. Suppression des anciennes versions des deux doublons et je peux maintenant réinstaller les packages.

0
Jeff Reichard

Si on s’intéresse aux mondes .Net Core et .Net Standard Portable Class Library, ces types d’erreur se produisent trop souvent. 

Pour moi, j’emballe généralement toutes mes préoccupations transversales sous la forme de mon propre paquet modulaire. Je trouve que si mes paquets contiennent beaucoup d'autres dépendances, le simple fait d'ajouter cette dépendance en modifiant la section des dépendances project.json est extrêmement bogué, ce qui entraîne le comportement décrit ci-dessus.

Bien trop souvent, la solution consiste à supprimer toutes les dépendances et à utiliser l'outil de gestion de packages NuGet approprié pour ajouter les packages à partir de mon flux privé, ce qui entraînera l'affichage de la boîte de dialogue des conditions d'utilisation des dépendances externes de Microsoft.

Il n'est pas rare de devoir supprimer et recréer complètement la CLI!

.Net Core et Standard ne doivent jamais être marqués RTM. Espérons que tout ira mieux lorsque .Net Standard 2.0 deviendra réalité, mais pour l'instant, si vous essayez de construire avec .Net Standard et Core, je sais exactement ce que vous ressentez maintenant et espérons que cette réponse vous sera utile ...

0
Sarel Esterhuizen

J'ai aussi fait face au même problème. J'ai supprimé le package et supprimé l'élément suivant du fichier Web.Config, puis installé le package en arrière - problème résolu!

section name = "ajaxControlToolkit" type = "AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit" 

0
shamal