配置 .NET 的实时代码分析

在编辑器中编辑源文件时,Visual Studio 会以多种方式分析代码。 此分析称为后台分析。 这些分析可以根据功能,按如下方式进行分类:

  • 后台诊断计算:这种类型的分析用于计算源文件中的错误、警告和建议。 这些诊断显示为“错误列表”窗口中的条目,并在代码编辑器中以波浪线标记。 它们可分为以下几类:

    • C# 和 Visual Basic 编译器诊断
    • Roslyn 分析器诊断,其中包括:
      • 提供代码样式建议的内置 IDE 分析器
      • 提供代码质量建议的内置 CA 分析器
      • 为当前解决方案中的项目安装的外部分析器包
  • 其他后台分析:这种类型的分析用于提升 IDE 功能的响应能力和 Visual Studio 交互。 示例分析包括:

    • 打开文件的后台分析
    • 后台编译具有打开文件的项目以实现符号,从而提升某些 IDE 功能的响应能力
    • 生成语法和符号缓存
    • 检测源文件(如窗体和控件)的设计器关联

默认分析范围

默认情况下,编译器诊断在所有打开的文档上运行。 在 Visual Studio 2022 及更高版本中,Roslyn 分析器诊断仅在当前活动文档上运行。 其他后台分析会针对至少有一个打开的文件的所有项目执行。 一些后台分析会针对整个解决方案执行。

自定义分析范围

为提供最佳用户体验、功能和性能,每个后台分析的默认范围都针对大多数客户方案和解决方案进行了优化。 但是,在某些情况下,客户可能需要自定义此范围以减少或增加后台分析。 例如:

  • 省电模式

    如果使用笔记本电脑电池运行,最好将功耗降至最低,以延长电池使用时间。 在这种情况下,需要最大程度地减少后台分析。

  • 按需代码分析

    如果更喜欢关闭实时分析器执行并按需手动运行代码分析,则需要最大程度地减少后台分析。 有关详细信息,请参阅为 .NET 手动运行代码分析

  • 完整解决方案分析

    你可能需要查看解决方案的所有文件中的所有诊断,无论它们是否在编辑器中打开,你都可以将后台分析范围最大化为整个解决方案。

从 Visual Studio 2019 开始,你可以显式自定义 C# 和 Visual Basic 项目的所有实时代码分析(包括诊断计算)的范围。 可用的分析范围包括:

作用域 说明
禁用所有分析器和相应的代码修复。

对所有打开的文档启用编译器诊断和相应的代码修复。
当前文档(默认) 所有分析器仅在当前活动的文档上运行。

对所有打开的文档启用编译器诊断。
打开的文档 对所有打开的文档启用所有分析器和编译器诊断。
整个解决方案 解决方案中的所有文档(无论是打开还是关闭)上都启用了所有分析器和编译器诊断。
  • 当前文档:最小化实时代码分析范围,以仅对编辑器中的当前文件或可见文件执行。
  • 打开的文档:实时代码分析范围包括所有打开的文档。 此设置为默认设置。
  • 整个解决方案:最大化实时代码分析范围,以对整个解决方案中的所有文件和项目执行。

可以按照以下步骤,在“选项”中选择自定义分析范围之一:

  1. 要打开“选项”对话框,请在 Visual Studio 中的菜单栏上依次选择“工具”>“选项” 。

  2. 在“选项”对话框中,选择“文本编辑器”>“C#”(或“Visual Basic”)>“高级”。

  1. 从“运行后台代码分析的对象:”下拉列表中选择后台分析范围,以自定义分析范围。 完成后选择“确定”。

    显示 Visual Studio 中的后台代码分析范围选项的屏幕截图。

  1. 在“后台分析范围:”下面选择后台分析范围。 完成后选择“确定”。

    显示 Visual Studio 中的后台代码分析范围选项的屏幕截图。

注意

在 Visual Studio 2019 之前,使用“工具”>“选项”>“文本编辑器”>“C#”(或“Visual Basic”)>“高级”选项卡中的“启用完整解决方案分析”复选框,将诊断计算的分析范围自定义为整个解决方案。在以前的 Visual Studio 版本中,不支持最小化后台分析范围。

自动最小化实时代码分析范围

如果 Visual Studio 检测到可用的系统内存为 200 MB 或更少,它会自动将实时代码分析范围最小化为“当前文档”。 当出现这种情况时,会显示一条警报,通知你 Visual Studio 正在禁用某些功能。 有关详细信息,请参阅自动功能挂起

显示 Visual Studio 正在最小化分析范围的警报警告的屏幕截图。