Visual Studio参考显示未引用的NuGet包

问题描述

通过在VS 2019中右键单击packages.config文件,我将.NET Framework 4.7.2项目从packages.config转换为packagereferences格式。

从那时起,Visual Studio在“引用”节点中显示了从项目中卸载的NuGet软件包的蓝色图标。真正奇怪的是,没有此程序包,构建将失败,因为在代码中使用了它,但是构建成功了!

  1. .csproj中没有对此NuGet软件包的软件包引用 文件
  2. 项目目录中没有packages.config文件
  3. 删除了.vs文件夹和较旧的packages文件
  4. 重新启动Visual Studio
  5. 问题依然存在
  6. 在Visual Studio中触发的
  7. uninstall-package命令说 包未安装。
  8. 显示了引用(蓝色图标),并且项目已构建!

问题

  1. 如何从项目中完全删除此软件包?
  2. 如何立即停止Visual Studio引用此程序包?

解决方法

==============================

如果您的项目没有引用任何其他项目,或者只是引用了未安装相同nuget软件包的项目,那么我认为该问题与您的项目本身或VS环境有关。

在这种情况下,很奇怪的是,当您已经卸载nuget软件包时,nuget软件包的蓝色图标仍然停留在解决方案资源管理器中。

请尝试以下建议:

1)禁用扩展-> 管理扩展-> 已安装

2) clean nuget caches并在工具-> 导入和导出设置-> 重置所有设置

3),然后关闭VS,删除下的缓存文件

C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx\ComponentModelCache

并删除.vs隐藏文件夹,binobj文件夹。

4),然后重新启动VS以测试问题是否仍然存在。

此外,您可以使用devenv /safemode启动干净的初始VS,然后测试您的项目。

================================

如果您的情况是这种情况:

您的项目B 引用了一个名为项目A 的项目,而A也安装了相同的nuget软件包。而项目A 使用PackageReference nuget management format

尽管已在项目B上卸载了nuget软件包,但您的obj文件夹中仍包含project.assert.jsonxxx.nuget.g.props之类的文件,这是 PackageReference 。因此,项目B 的nuget软件包管理格式与项目A相同,并将dll从项目A 传输到项目B ,以便您可以在项目B 中使用dll。

然后删除.vs隐藏文件夹将删除项目B 的nuget软件包格式PackageReference,因为您已经卸载了 Project上的所有nuget软件包。 B ,但obj文件夹的 PackageReference 内容仍然存在。

因此,您应该关闭VS,同时删除Project B的.vs隐藏文件夹,bin和obj文件夹。

注意重建和清理不会删除以前的恢复文件。

如果不起作用,我认为您已将此XML节点写在B.csproj文件下:

<PropertyGroup>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>  

因此,您应仔细检查项目B,它仍将文件project.assert.jsonxxx.nuget.g.props,...作为 PackageReference 还原。 >。

因此,如果有,请删除此节点,并同时删除.vs隐藏文件夹,binobj文件夹。