【发布时间】:2021-06-19 01:25:03
【问题描述】:
在我的项目中,我使用了类库。现在我将该类库作为 NuGet 包,删除类库,当尝试安装包时出现此错误:“已添加具有相同密钥的项目”?
【问题讨论】:
标签: nuget
在我的项目中,我使用了类库。现在我将该类库作为 NuGet 包,删除类库,当尝试安装包时出现此错误:“已添加具有相同密钥的项目”?
【问题讨论】:
标签: nuget
就我而言,当我的 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"
}
}
}
【讨论】:
我遇到了同样的错误,在我升级 NuGet 后它得到了修复。使用工具 -> 'Extensions and Updates' 对话框更新 NuGet。
【讨论】:
在从其他开发人员处获取代码时,我曾多次遇到此问题。其他用户提到的问题是我遇到的一些问题。所以这里列出了我过去为解决这个问题所做的事情,以及我刚刚遇到的一个新问题:
检查 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" />
【讨论】:
我遇到了同样的问题。它一直告诉我“已经添加了具有相同密钥的项目”,即使它不在我的参考资料中,也不在我的 packages.configeither 中。
最终我设法通过在 Visual Studio 中显示所有文件来修复它。在bin 文件夹中,我找到了对我试图通过Nuget 安装的.dll 的引用。删除那个之后,问题就消失了。
也许这也可以为您解决问题。
【讨论】:
我也遇到了同样的问题。我删除了包并从 Web.Config 文件中删除了以下项目,然后重新安装了包 - 问题解决了!
section name="ajaxControlToolkit" type="AjaxControlToolkit.AjaxControlToolkitConfigSection, AjaxControlToolkit"
【讨论】:
这让我大部分时间都在忙。尝试安装软件包时出现同样的问题。最后尝试安装具有相同结果的不同软件包。事实证明,packages.config 中的任何重复(具有不同版本)都会导致此错误。删除了两个副本的旧版本,现在我可以再次安装包。
【讨论】:
多年后我的问题出现了...... VS2019 我在 .net 5 中遇到了这个错误。
我在构建包含的项目时遇到此错误,但该项目包含的项目不在解决方案中。
我构建的所有项目都给出了相同的错误,因此它看起来像是我正在构建的任何项目的当前 nuget 包集。一旦我删除了缺少包含的项目或将依赖项目添加到解决方案中,它就被解决了。
【讨论】: