问题描述
通过在VS 2019中右键单击packages.config文件,我将.NET Framework 4.7.2项目从packages.config转换为packagereferences格式。
从那时起,Visual Studio在“引用”节点中显示了从项目中卸载的NuGet软件包的蓝色图标。真正奇怪的是,没有此程序包,构建将失败,因为在代码中使用了它,但是构建成功了!
- .csproj中没有对此NuGet软件包的软件包引用 文件。
- 项目目录中没有packages.config文件
- 我删除了.vs文件夹和较旧的packages文件夹
- 重新启动Visual Studio
- 问题依然存在 在Visual Studio中触发的
- uninstall-package命令说 包未安装。
- 还显示了引用(蓝色图标),并且项目已构建!
问题
解决方法
==============================
如果您的项目没有引用任何其他项目,或者只是引用了未安装相同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
隐藏文件夹,bin
和obj
文件夹。
4),然后重新启动VS以测试问题是否仍然存在。
此外,您可以使用devenv /safemode启动干净的初始VS,然后测试您的项目。
================================
如果您的情况是这种情况:
您的项目B 引用了一个名为项目A 的项目,而A也安装了相同的nuget软件包。而项目A 使用PackageReference nuget management format。
尽管已在项目B上卸载了nuget软件包,但您的obj
文件夹中仍包含project.assert.json
,xxx.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.json
,xxx.nuget.g.props
,...作为 PackageReference 还原。 >。
因此,如果有,请删除此节点,并同时删除.vs
隐藏文件夹,bin
和obj
文件夹。