智能感知以及引用和定义导航在 VS2022 中不起作用

问题描述 投票:0回答:1

警告:几周前我已在 Reddit 上发布了此内容,但从未得到回复。

我从第三方获得了一个大型 .NET 解决方案,但我遇到了以下问题:

    对于从
  • PackageReferenceProjectReference
     中定义的命名空间导入的符号,右键单击 > 转到定义
    ,将导致以下弹出窗口:
    
    

对于属于引用的命名空间(DLL、项目或 NuGet 包)的符号,

    右键单击 > 查找所有引用
  • 不会产生任何结果,仅在“查找引用”窗格中显示以下信息消息

智能感知不适用于属于引用的命名空间的符号。它们根本没有突出显示:
  • 上述所有功能都适用于系统命名空间或当前命名空间中定义的符号。我的本地计算机上的其他解决方案不会表现出这种行为并且工作正常。我尝试过的事情:

设置
    工具 > 选项 > 文本编辑器 > C# > 高级 > 运行后台代码分析
  • 整个解决方案以及 启用 CodeLens
  • 删除
  • .vs
  • 文件夹
    清理和重建,两者都成功了,但没有解决我上面描述的问题。
  • 这些事情都不起作用,所以我开始认为这个特定的解决方案
出现了更根本的问题。我一生都无法弄清楚它出了什么问题。什么可能导致 Visual Studio 2022 中的解决方案无法识别符号?如何进一步找出问题的根本原因?

我终于明白了。方法如下:
c# visual-studio intellisense symbols project-reference
1个回答
0
投票

在其他(第三方)解决方案所在的目录中创建了一个空的虚拟解决方案

    打开虚拟解决方案并创建两个项目:
  • 一个名为
  • ConsoleApp1
    • 的控制台应用程序
      一个名为 
      ClassLibrary1
    • 的类库,其中包含一个名为
    • Class1
       的类
      
      
      
    ClassLibrary1
  • 引用了
  • ConsoleApp1
    ,并在
    Program.Main
    中添加了引用
    Class1
    的代码
    
    观察到 
    Class1
  • 中的
  • ConsoleApp1
     符号未突出显示且不可导航,与我的实际用例类似。
    确保我的虚拟解决方案构建时没有错误。
  • 然后我开始从原始解决方案中删除内容。考虑到代码库的大小及其包含的内容量,我认为这可能需要很长时间。首先,我删除了
  • Directory.Build.props
,尽管我的虚拟构建很好,但

Class1

 仍然无法导航。 
Directory.Build.props
 文件还导入了 
Directory.Build.targets
 文件,所以我也删除了它。你瞧,
Class1
 亮起绿色并可导航。然后我恢复了 
Directory.Build.targets
Class1
 不再可导航,我开始从 
Directory.Build.targets
 删除各种属性和项目组,直到我确定了有问题的行:
<PropertyGroup>
  <DisableRoslynDesignTime Condition="...">true</DisableRoslynDesignTime>
</PropertyGroup>

事实证明,由于项目中的大多数其他开发人员都使用 Resharper,他们希望在设计时关闭 Roslyn,因为 Resharper 有自己的分析器。由于我不喜欢使用 Resharper,因此我针对这个特定的解决方案禁用了它。
有一篇

文章

详细介绍了此配置选项。

© www.soinside.com 2019 - 2024. All rights reserved.