Visual Studio Code Code Cleanup为何不处理带<auto-generated>标记的自动生成类
问题解答
关于自动生成代码跳过Code Cleanup的默认规则
这是Visual Studio Code Cleanup功能的隐式默认行为,所有带有<auto-generated>标签注释的文件,默认都会被所有代码分析、清理、格式校验逻辑跳过,设计初衷是避免手动修改自动生成代码后,下次重新生成文件时自定义修改被覆盖,同时也避免生成代码不符合自定义编码规范触发大量无意义告警。
该行为是可配置的,你可以通过两种方式修改规则:
- 打开Visual Studio 「工具」->「选项」->「文本编辑器」->「C#」->「代码样式」->「常规」,取消勾选「跳过生成的代码(仅限诊断)」即可让清理逻辑对这类文件生效
- 如果你用
.editorconfig管理项目规则,可以给对应文件的配置项设置generated_code = false来强制开启代码清理
其他让指定类/文件被Code Cleanup忽略的方法
- 给目标类添加
[GeneratedCode]特性:引用System.CodeDom.Compiler命名空间后,在类声明上方添加[GeneratedCode("CustomTool", "1.0")]即可,特性的两个参数可自定义,只要标记了该特性的类都会被清理逻辑跳过 - 自定义注释标记:不需要完整的注释块,在文件头部加单行注释
// <auto-generated/>也会被识别为生成代码,触发跳过逻辑 - 通过
.editorconfig批量配置:给指定匹配规则的文件设置generated_code = true,示例如下:
# 匹配所有.g.cs后缀的文件,标记为生成代码 [*.g.cs] generated_code = true # 匹配AutoGenerated文件夹下的所有cs文件 [AutoGenerated/*.cs] generated_code = true
- 针对局部代码段跳过:如果不需要忽略整个类/文件,只是要跳过某一段代码,可以用
#pragma warning disable和#pragma warning restore包裹对应代码段,指定要跳过的规则ID即可。
内容的提问来源于stack exchange,提问作者Thorberg
相关产品推荐
相关产品推荐

