1

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

从那时起,Visual Studio 会显示我从“引用”节点中的项目中卸载的 NuGet 包的蓝色图标。真正奇怪的是,如果没有这个包,构建应该会失败,因为它在代码中使用,但构建成功!

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

问题

  1. 如何从项目中完全删除这个包?
  2. 我现在如何阻止 Visual Studio 引用这个包?
4

1 回答 1

0

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

如果您的项目未引用任何其他项目或仅引用未安装相同 nuget 包的项目,我认为该问题与您的项目本身或 VS 环境有关。

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

请尝试以下建议:

1)禁用Extensions --> Manage Extensions --> Installed下的任何第三方扩展

2) 清理nuget缓存并重置工具下的vs设置->导入和导出设置->重置所有设置

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

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

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

4)然后重启VS测试问题是否依然存在。

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

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

如果您的情况是这样的:

您的项目 B引用了一个名为Project A的项目,而 A 也安装了相同的 nuget 包。并且项目 A使用PackageReference nuget 管理格式

虽然您已经卸载了项目 B 上的 nuget 包,但您的obj文件夹中仍然有类似 的文件project.assert.jsonxxx.nuget.g.props这是PackageReference的一个功能。正因为如此,Project B 的 nuget 包管理格式与Project A相同,会将 Project A 中的 dll 传输Project B中,以便您在项目 B中使用该 dll 。

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

所以你应该关闭VS,同时删除Project B的.vs隐藏文件夹、bin和obj文件夹。

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

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

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

所以你应该仔细检查你的项目 B ,它仍然会恢复文件project.assert.json, xxx.nuget.g.props,.... 作为PackageReference

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

于 2020-11-05T07:14:08.030 回答