C# Visual Studio引用显示未被引用的NuGet包

C# Visual Studio引用显示未被引用的NuGet包,c#,nuget,visual-studio-2019,packagereference,C#,Nuget,Visual Studio 2019,Packagereference,通过右键单击VS2019中的packages.config文件,我将.NET Framework 4.7.2项目从packages.config转换为packagesreferences格式 从那时起,VisualStudio在References节点中显示了我从项目中卸载的NuGet包的蓝色图标。真正奇怪的是,如果没有这个包,构建应该会失败,因为它在代码中使用,但是构建成功了 .csproj中没有对此NuGet包的packagereference 文件 项目目录中没有packages.conf

通过右键单击VS2019中的packages.config文件,我将.NET Framework 4.7.2项目从packages.config转换为packagesreferences格式

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

  • .csproj中没有对此NuGet包的packagereference 文件
  • 项目目录中没有packages.config文件
  • 我删除了.vs文件夹和旧的packages文件夹
  • 重新启动Visual Studio
  • 问题依然存在
  • 在VisualStudio中触发的卸载包命令表示 软件包未安装
  • 然而,参考(蓝色图标)会显示出来,并且项目会构建 问题:

  • 如何从项目中完全删除此包
  • 现在如何阻止Visual Studio引用此包

  • ===============================

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

    在这种情况下,当您已经卸载nuget包时,nuget包的蓝色图标仍然保留在解决方案资源管理器上,这是非常奇怪的

    请尝试以下建议:

    1)禁用扩展下的任何第三方扩展-->管理已安装的扩展-->

    2)和重置工具下的vs设置-->导入和导出设置-->重置所有设置

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

    C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx\ComponentModelCache
    
    还可以删除
    .vs
    隐藏文件夹、
    bin
    obj
    文件夹

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

    除了,您还可以使用启动一个干净的初始VS,然后测试您的项目


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

    如果您的情况是这样的:

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

    虽然您已经卸载了Project B上的nuget软件包,但您的
    obj
    文件夹中仍然有
    Project.assert.json
    xxx.nuget.g.props
    等文件,这是PackageReference的一项功能。因此,项目B的nuget包管理格式与项目A相同,并将dll从项目A传输到项目B,以便您可以在项目B中使用dll

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

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

    注意重建和清理不会删除以前的还原文件

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

    <PropertyGroup>
        <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    </PropertyGroup>  
    
    
    包装参考
    
    因此您应该仔细检查项目B,它仍然会还原文件
    project.assert.json
    xxx.nuget.g.props
    ,。。。。as包装参考


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

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

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

    在这种情况下,当您已经卸载nuget包时,nuget包的蓝色图标仍然保留在解决方案资源管理器上,这是非常奇怪的

    请尝试以下建议:

    1)禁用扩展下的任何第三方扩展-->管理已安装的扩展-->

    2)和重置工具下的vs设置-->导入和导出设置-->重置所有设置

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

    C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx\ComponentModelCache
    
    还可以删除
    .vs
    隐藏文件夹、
    bin
    obj
    文件夹

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

    除了,您还可以使用启动一个干净的初始VS,然后测试您的项目


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

    如果您的情况是这样的:

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

    虽然您已经卸载了Project B上的nuget软件包,但您的
    obj
    文件夹中仍然有
    Project.assert.json
    xxx.nuget.g.props
    等文件,这是PackageReference的一项功能。因此,项目B的nuget包管理格式与项目A相同,并将dll从项目A传输到项目