Visual Studio References 显示未引用的 NuGet 包
Posted
技术标签:
【中文标题】Visual Studio References 显示未引用的 NuGet 包【英文标题】:Visual Studio References shows NuGet package that is not referenced 【发布时间】:2020-11-04 10:00:25 【问题描述】:我通过右键单击 VS 2019 中的 packages.config 文件将 .NET Framework 4.7.2 项目从 packages.config 转换为 PackageReferences 格式。
从那时起,Visual Studio 会显示我从“引用”节点中的项目中卸载的 NuGet 包的蓝色图标。真正奇怪的是,如果没有这个包,构建应该会失败,因为它在代码中使用,但构建成功!
-
.csproj 中没有此 NuGet 包的包引用
文件。
项目目录下没有packages.config文件
我删除了 .vs 文件夹和旧包文件夹
重新启动 Visual Studio
问题仍然存在
在 Visual Studio 中触发的 uninstall-package 命令表示
软件包未安装。
但显示参考(蓝色图标)并且项目已构建!
问题
-
如何从项目中完全删除这个包?
我现在如何阻止 Visual Studio 引用此包?
【问题讨论】:
如果您可以提供一些额外上下文的屏幕截图会有所帮助。您可能还想尝试从%userprofile%\.nuget\packages\
删除包目录,然后重新启动 VS。
只需删除解决方案资源管理器中的引用即可。引用仍在 csproj 文件中,但不再是用户,并且是蓝色的,因为找不到 dll。
嗨,Ian,nuget 包也在另一个项目中被引用,该项目作为项目参考添加到原始项目中。一旦我删除了该项目引用,nuget 包也消失了! @jdweng - 您无法在解决方案资源管理器中删除新世界中 Nuget 包的引用。此外,该软件包未在 csproj 文件中列出,这是主要混乱的根源。
【参考方案1】:
=================================
如果你的项目没有引用任何其他项目,或者只是引用了一个没有安装相同 nuget 包的项目,我认为问题与你的项目本身或 VS 环境有关。
在这种情况下,当你已经卸载了 nuget 包时,nuget 包的蓝色图标仍然停留在解决方案资源管理器中,这很奇怪。
请尝试以下建议:
1)在Extensions-->Manage Extensions-->Installed下禁用任何第三方扩展程序/p>
2) clean nuget caches 并在工具下重置 vs 设置-->导入和导出设置-->全部重置设置
3)然后关闭VS,删除
下的缓存文件C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx\ComponentModelCache
同时删除.vs
隐藏文件夹、bin
和obj
文件夹。
4)然后重启VS测试问题是否依然存在。
此外,您可以使用devenv /safemode 启动一个干净的初始VS,然后测试您的项目。
==================================
如果您的情况是这样的:
您的项目 B 引用了一个名为 Project A 的项目,而 A 也安装了相同的 nuget 包。而项目A使用PackageReference nuget management format。
虽然您已经卸载了项目 B 上的 nuget 包,但您的 obj
文件夹仍然包含 project.assert.json
,xxx.nuget.g.props
之类的文件,这是 PackageReference 的一个功能.正因为如此,Project B的nuget包管理格式与Project A相同,会将Project A的dll传输到Project B 以便您可以使用 项目 B 中的 dll。
And 删除 .vs
隐藏文件夹将删除 Project B 的 nuget 包格式 PackageReference,因为您已经卸载了 Project B 但obj
文件夹的PackageReference 内容仍然存在。
所以你应该关闭VS,同时删除Project B的.vs隐藏文件夹、bin和obj文件夹。
注意:重建和清理不会删除之前的恢复文件。
如果这样不行,我想你在B.csproj
文件下写了这个xml节点:
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
所以你应该仔细检查你的项目 B,它仍然会将文件 project.assert.json
,xxx.nuget.g.props
,.... 恢复为 PackageReference。 p>
因此,如果有,请删除此节点,同时删除.vs
隐藏文件夹、bin
和obj
文件夹。
【讨论】:
以上是关于Visual Studio References 显示未引用的 NuGet 包的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 中的 Jquery 没有智能感知
如何在 Visual Studio 中重命名方法并保留历史记录?
Visual Studio 2012 JavaScript Intellisense 参考组恢复为隐式 (Windows)