【问题标题】:Project Reference & Nuget Package Reference Conflict - Key with same name already exists项目参考和 Nuget 包参考冲突 - 已存在同名键
【发布时间】:2020-07-24 07:12:37
【问题描述】:

使用 Visual Studio 2019 版本 16.6.0 预览版 2.1 - 我有一个包含两个项目的解决方案:

项目 A - 具有 nuget 包依赖项Package1

项目 B - 具有对 项目 A

的项目引用

我现在还要求 Project B 包含相同的 nuget 包依赖项Package 1

当我尝试安装软件包时,我收到错误“已添加具有相同密钥的项目”。

我看过一些讨论这个问题的帖子,但没有明确的解决方案。出于调试目的,我想保留 Project A 作为 Project B 的项目参考。知道我该如何解决这个问题吗?

【问题讨论】:

  • 你的Project A和Project B的项目类型是什么,PackageReference/packages.config的net framework项目还是net core项目?
  • 你能在项目 B 中安装另一个不同的 nuget 包吗?另外,能否分享一下安装失败的错误日志?有了它,我们可以更快地解决这个问题

标签: visual-studio package nuget nuget-package project-reference


【解决方案1】:

项目参考和 Nuget 包参考冲突 - 密钥相同 名称已存在

首先,尝试删除Porject BProject A的项目引用,然后在项目B中安装包,然后在项目B中添加项目A的项目引用。检查是否有效.

如果不是,我认为您的项目中存在一些不同版本的 nuget 包冲突。见this similar issue。您应该删除重复的包。试试这些:

1)如果你使用Packages.config,你应该检查是否有两个这样的重复包:

  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40" />
  <package id="Newtonsoft.Json" version="5.0.8" targetFramework="net40" />

删除旧的并保留最新的。同时检查你的xxx.csproj文件,删除重复的节点。

2)删除项目A和项目B的bin,obj文件夹

3) clean local nuget caches 并删除解决方案下的 packages 文件夹(xxxx\Projects\MyProjName\packages)。

之后,在Tools下运行update-package -reinstall-->Nuget Package Manager-->Package Manager Console

在项目 A 和项目 B 上都做。

4) 然后在Project B 上安装Package 1 以测试问题是否仍然存在。

【讨论】:

  • 清除缓存和删除/重置项目引用的组合可以解决问题。谢谢!
猜你喜欢
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多