重新打开项目后出现双重引用

Double reference appears after re-opening project

我创建了一个项目并将其设为 nuget 包,当我在项目中安装该 nuget 包时,它工作正常并且一切看起来都不错。

当我关闭项目并重新打开它(使用 visual studio)时出现问题。在参考列表中,由于某种原因,nuget 包是双重的,并且没有 path/no 版本 e.t.c。项目运行,一切都使用正确的引用,但在添加的这个双重引用的输出 window 中有警告。

我不明白为什么会这样。在 .csproj 中只有一个对此 nuget 的引用,在 packages 文件夹中也是如此。

有人遇到过吗?

Double reference appears after re-opening project

添加 nuget 引用会在 .csproj 文件中添加如下节点:

<Reference Include="xx.xxx.Parameters, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <HintPath>..\packages\xx.xxx.Parameters.1.0.0\lib\net461\xx.xxx.Parameters.dll</HintPath>
</Reference>

由于引用中出现了双重引用,所以,首先,我们需要仔细检查.csproj文件中是否只有一个引用到这个nuget。

如果是,请尝试在 re-open 项目后清理构建,有时 Visual Studio 会从 bin\ 文件夹引用。

如果以上没有帮助,请删除带有黄色标记的引用,然后关闭项目并re-open它,检查是否重现此问题。

此外,您可以安装其他的nuget包来检查是否有同样的问题,这样我们就可以知道这个问题与您的Visual Studio或nuget包本身有关。

创建 nuget 包时,某些场景需要 .props 和 .targets 文件。例如,在我回答 的地方使用多种架构。 - 我更新了这个答案以反映我在尝试解决双重引用问题时发现的内容

有一点没有说清楚,就是 .target 和 .props 的命名需要与 nuget 包文件名相同(也意味着版本)。 如果没有这个,在 re-opening visual studio 时会出现双重引用