如何让Visual Studio 2017命名规则应用于自动生成的设计器代码?
让Visual Studio 2017命名规则覆盖设计器生成代码的方法
没问题,这个需求完全可以实现!下面是具体的操作步骤,一步步来就能搞定:
1. 修改命名规则的适用范围,包含生成代码
默认情况下,VS会把带[GeneratedCode]属性的设计器代码排除在命名规则检查之外,所以第一步要调整规则的适用范围:
- 打开VS的设置窗口:点击顶部菜单栏的
Tools→Options - 依次展开
Text Editor→C#→Code Style→Naming - 在已定义的规则列表里,找到你设置的「私有字段以下划线开头」的规则,点击规则右侧的「编辑」按钮
- 在弹出的「编辑命名样式规则」窗口中,切换到「适用范围」(Scope)标签页
- 找到「生成的代码」相关选项,取消勾选「排除生成的代码」(VS2017里这个选项控制是否忽略生成代码)
- 保存设置,关闭窗口
2. 确保项目代码分析不排除Designer文件
有些项目默认会把*.Designer.cs文件排除在代码分析之外,需要检查并移除排除:
- 在解决方案资源管理器里右键你的项目,选择「属性」
- 切换到「代码分析」标签页
- 查看「排除的文件」列表,如果里面有
*.Designer.cs,选中它并点击移除按钮 - 保存项目属性设置
3. 可选:用.editorconfig强化规则(更稳定)
如果上面的设置生效不够稳定,推荐用.editorconfig文件来统一配置,VS2017完全支持这种方式:
- 在项目根目录新建一个名为
.editorconfig的文件 - 粘贴以下配置内容(对应你的私有字段下划线规则):
[*.cs] # 定义私有字段命名规则 dotnet_naming_rule.private_fields_with_underscore.severity = suggestion dotnet_naming_rule.private_fields_with_underscore.symbols = private_fields dotnet_naming_rule.private_fields_with_underscore.style = underscore_prefix_style # 指定规则适用的符号:私有字段(包括只读) dotnet_naming_symbols.private_fields.applicable_kinds = field dotnet_naming_symbols.private_fields.applicable_accessibilities = private dotnet_naming_symbols.private_fields.required_modifiers = readonly # 定义下划线前缀的样式 dotnet_naming_style.underscore_prefix_style.prefix = _ dotnet_naming_style.underscore_prefix_style.capitalization = camel_case dotnet_naming_style.underscore_prefix_style.word_separator = none # 确保Designer文件应用规则 [*.Designer.cs] dotnet_analyzer_diagnostic.severity = all
- 保存文件后,VS会自动加载这个配置,规则会覆盖项目和全局设置
最后一步:让设置生效
做完上面的操作后,建议:
- 重启Visual Studio,确保所有设置加载到位
- 右键项目选择「清理」→「生成」,触发代码分析检查
- 对于已有的设计器生成字段,可以用VS的「快速操作」(快捷键
Ctrl+.)批量修复不符合规则的命名
这样不管是手动写的代码还是设计器生成的代码,都会统一应用你的下划线开头的私有字段命名规则啦!
内容的提问来源于stack exchange,提问作者rory.ap




