配置编译器警告
ReSharper 包含报告 最重要的编译器警告及其对应 快速修复的代码检查。 为确保 ReSharper 的代码检查结果与编译器输出以及其他工具和分析器一致,编译器警告的严重性等级无法像对 ReSharper 的专有检查那样 通过编辑器或 通过 ReSharper 选项进行配置。
作为替代,存在其他抑制编译器警告的方法,概述如下:
通过以下方式配置 | 兼容性 | 粒度 | 用于以下操作 |
|---|---|---|---|
所有代码分析规则,并非所有编译器警告 | 文件/类型/全局 | 确保与 Roslyn 分析器兼容;修改规则的严重性等级 | |
所有编译器警告和代码分析规则 | 代码块/文件 | 在本地抑制特定警告 | |
所有编译器警告和代码分析规则 | 整个项目范围 | 在构建级别抑制警告或将警告提升为错误 | |
所有编译器警告和代码分析规则 | 类型/成员 | 在局部范围内抑制特定警告 | |
所有编译器警告和代码分析规则 | 程序集范围 | 在不可编辑或生成的代码中项目范围地抑制警告 |
使用 .editorconfig(推荐用于代码风格及现代分析器)
.editorconfig 文件是配置代码风格和诊断的便捷方式。 它允许您以一致且项目范围的方式指定某些警告的严重性。
您可以按以下格式为所有受支持的警告使用 EditorConfig 键:
例如:
此方法适用于从 C# 8.0 起的编译器警告,以及包括编译器自身发出的 Roslyn 分析规则。 例如:
与可空引用相关的警告(CS8xxx)。
平台兼容性警告(CS9xxx)。
特定文档或代码风格诊断(例如:CS1591)。
在代码中使用 #pragma 指令
您可以使用 #pragma 指令在代码中直接抑制特定警告。 此方法适用于仅一次的抑制,或将警告范围限定到特定代码块。
要抑制高亮显示的编译器警告,请按 Alt+Enter 并选择相应项。

使用 #pragma 进行抑制的效果如下:
此方法适用于所有编译器警告(CSxxxx ),即便是无法通过 .editorconfig 配置的警告。
在项目文件(.csproj)中配置警告
项目文件允许您在整个项目范围内配置警告行为。 例如:
抑制特定警告
将所有警告视为错误
特定警告是否作为错误
.csproj 文件中的配置适用于所有 CS 警告,并在构建输出行为方面覆盖 .editorconfig 设置。
使用 [SuppressMessage] 特性
[SuppressMessage] 用于在特定类型或成员中抑制特定编译器警告和代码分析规则。 当您需要清晰、有范围且有注释的抑制时,此方法可作为 #pragma 的替代方案。 例如:
使用全局抑制文件(GlobalSuppressions.cs)
您可以使用 全局抑制文件在整个项目中抑制任何编译器警告或 Roslyn 代码分析规则。 使用特性指定要抑制的警告。 例如: