在编辑器中编辑源文件时,Visual Studio 会以多种方式分析代码。 此分析称为 后台分析。 这些分析可以按如下方式进行分类,具体取决于功能:
诊断的背景计算: 这种类型的分析计算源文件中的错误、警告和建议。 这些诊断在 “错误列表 ”窗口中显示为条目,并在代码编辑器中用波浪线标记。 它们可以分为以下类别:
- C# 和 Visual Basic 编译器诊断
- Roslyn 分析器诊断,其中包括:
- 用于代码样式建议的内置 IDE 分析器
- 用于代码质量建议的内置 CA 分析器
- 当前解决方案中项目使用的外部分析器包
其他背景分析: 这种类型的分析改进了 IDE 功能的响应能力和 Visual Studio 交互。 示例分析包括:
- 打开的文件的背景分析
- 使用打开的文件对项目进行后台编译,以实现改善 IDE 功能的响应能力符号
- 生成语法和符号缓存
- 检测源文件的设计器关联,例如表单和控件
默认分析范围
默认情况下,编译器诊断在所有打开的文档上运行。 在 Visual Studio 2022 及更高版本中,Roslyn 分析器诊断仅在当前活动文档中运行。 将对至少有一个打开文件的所有项目执行其他后台分析。 针对整个解决方案执行一些后台分析。
自定义分析范围
每个后台分析的默认范围针对大多数客户方案和解决方案优化用户体验、功能和性能。 但是,在某些情况下,客户可能想要自定义此范围以减少或增加背景分析。 例如:
电源节省模式
如果你在笔记本电脑电池上运行,你可能希望最大程度地减少耗电量,以延长电池使用时间。 在此方案中,你想要最大程度地减少后台分析。
按需代码分析
如果希望根据需要关闭实时分析器执行并手动运行代码分析,则需要尽量减少后台分析。 有关详细信息,请参阅 针对 .NET 手动运行代码分析。
完整解决方案分析
如果要在解决方案中的所有文件中查看所有诊断,无论它们是否在编辑器中打开,都可以将后台分析范围最大化到整个解决方案。
从 Visual Studio 2019 开始,可以针对 C# 和 Visual Basic 项目显式自定义所有实时代码分析的范围,包括诊断计算。 可用的分析范围包括:
| Scope | Description |
|---|---|
| 没有 | 禁用所有分析器和相应的代码修复。 所有 打开 的文档上都启用了编译器诊断和相应的代码修复。 |
| 当前文档 (默认值) | 所有分析器仅在当前活动文档上运行。 所有 打开 的文档上都启用了编译器诊断。 |
| 打开文档 | 所有分析器和编译器诊断工具都启用于所有打开的文档。 |
| 整个解决方案 | 无论打开还是关闭,解决方案 中的所有 文档都启用了所有分析器和编译器诊断。 |
- 当前文档: 最大程度地减少实时代码分析范围,以便仅针对编辑器中的当前或可见文件执行。
- 打开文档: 实时代码分析范围包括所有打开的文档。 此设置是默认设置。
- 整个解决方案: 最大化实时代码分析范围,以针对整个解决方案中的所有文件和项目执行。
可以按照以下步骤在 “选项” 中选择自定义分析范围之一:
若要打开 “选项 ”对话框,请在 Visual Studio 的菜单栏上选择 “工具>选项”。
在 “选项 ”对话框中,选择 文本编辑器>C# (或 Visual Basic) >高级。
从 “运行后台代码分析”下拉列表中选择后台分析范围,以自定义分析的范围。 完成后选择 “确定 ”。
选择 后台分析范围下的后台分析范围:。 完成后选择 “确定 ”。
注释
在 Visual Studio 2019 之前,可以使用“工具>>>”(或 Visual Basic)>”选项卡中的“启用完整解决方案分析”复选框,将诊断计算的分析范围自定义到整个解决方案。不支持在以前的 Visual Studio 版本中最小化后台分析范围。
自动最小化实时代码分析范围
如果 Visual Studio 检测到 200 MB 或更少的系统内存可用,它会自动将实时代码分析范围降到 当前文档。 出现这种情况时,会显示一条警报,通知你 Visual Studio 正在禁用某些功能。 有关详细信息,请参阅 自动功能挂起。