安装NuGet包时已添加具有相同密钥的项目

时间:2015-07-14 12:04:16

标签: nuget

在我的项目中,我使用的是类库。现在我将该类lib作为NuGet包,删除了类lib,当尝试安装包时出现此错误:“已添加具有相同键的项目”?

7 个答案:

答案 0 :(得分:27)

在我的情况下,当我的packages.config文件包含重复的包ID时,我看到了这个错误。

您可以使用下面的PowerShell脚本查找解决方案中的所有重复包。它以递归方式查找所有packages.config文件,并根据packages.config文件检查重复的包ID。

$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"
        }
    }
}

答案 1 :(得分:9)

在从其他开发人员那里获取代码时,我在很多情况下遇到过这个问题。其他用户提到的问题是我遇到过的一些问题。所以这里列出了我过去为解决这个问题所做的一些事情,也是我刚刚遇到的一个新事物:

  • 重新启动Visual Studio,NuGet有时会出于某种原因引用错误的文件(非常常见的情况和解决方案)
  • 工具>中更新NuGet Manager扩展和更新...... (如@ravinsp所述)
  • 清理并重建您的解决方案。老dll可能搞砸了(如@Jules所述)
  • 检查packages.config中包含 DIFFERENT 版本的重复引用 - 即使您尝试安装完全不同的软件包,此错误也可能是由另一个软件包问题引起的。我试图安装 OctoPack ,并收到此错误,但它是由 System.Spatial 引起的。我的packages.config中包含以下两行:

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

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

答案 2 :(得分:4)

我遇到了同样的问题。它一直告诉我这个&#34;已经添加了一个具有相同键的项目&#34;,即使它不在我的引用中,也不在我的packages.config中。

最终,我设法通过在Visual Studio中显示所有文件来修复它。在bin文件夹中,我找到了我试图通过Nuget安装的.dll的引用。删除那个之后,问题就消失了。

也许这也为你解决了这个问题。

答案 3 :(得分:0)

我也遇到了同样的问题。我删除了包并从Web.Config文件中删除了以下项目,然后安装了包 - 问题解决了!

section name =“ajaxControlToolkit”type =“AjaxControlToolkit.AjaxControlToolkitConfigSection,AjaxControlToolkit”

答案 4 :(得分:0)

如果有人涉足.Net Core和.Net标准可移植类库,这些类型的错误经常发生。

对我而言,我通常将所有横切关注点作为我自己的模块化包装。我发现,如果我的包包含许多其他依赖项,只需通过修改project.json依赖项部分添加包依赖项就会产生令人难以置信的错误,从而产生上述行为。

通常,答案是删除所有依赖项并使用正确的NuGet包管理工具从我的私有源添加包,这将导致Microsoft的外部依赖项的条款和条件对话框呈现。

完全删除并重新创建CLI并不罕见!

.Net Core和Standard永远不应该被标记为RTM。希望当.Net Standard 2.0成为现实时,一切都会变得更好。但是现在如果你正在尝试使用.Net Standard和Core进行构建,我现在确切地知道你的感受,希望这个答案对你很有帮助......

答案 5 :(得分:0)

这使我一天中的大部分时间都在工作。尝试安装软件包时出现同样的问题。最后尝试安装具有相同结果的其他软件包。事实证明,packages.config中的任何重复项(具有不同版本)都会导致此错误。删除了两个重复版本的旧版本,现在我可以再次安装软件包了。

答案 6 :(得分:0)

我的问题是多年以后出现的... VS2019 并且我在 .net 5 中遇到了这个错误。

我在构建包含的项目时遇到此错误,但该项目包含的项目不在解决方案中。

我构建的所有项目都出现了相同的错误,因此它看起来像是我正在构建的任何项目的当前 nuget 包集。一旦我删除了缺少包含的项目或将依赖项目添加到解决方案中,它就解决了。