如何让.editorconfig命名规则排除async void事件处理程序?
解决async方法命名规则排除async void的问题
方法一:修改.editorconfig规则,限定返回类型
原规则仅检查async修饰符,导致async void方法也被纳入检查范围。只需在符号定义中添加返回类型限制,就能只针对返回Task或Task<T>的异步方法生效:
# Async methods returning Task/Task<T> should have "Async" suffix dotnet_naming_rule.async_task_methods_end_in_async.symbols = async_task_methods dotnet_naming_rule.async_task_methods_end_in_async.style = end_in_async dotnet_naming_rule.async_task_methods_end_in_async.severity = suggestion dotnet_naming_symbols.async_task_methods.applicable_kinds = method dotnet_naming_symbols.async_task_methods.applicable_accessibilities = * dotnet_naming_symbols.async_task_methods.required_modifiers = async # 限定返回类型为Task(非泛型)和Task`1(泛型Task<T>) dotnet_naming_symbols.async_task_methods.required_return_type = Task, Task`1 dotnet_naming_style.end_in_async.required_prefix = dotnet_naming_style.end_in_async.required_suffix = Async dotnet_naming_style.end_in_async.capitalization = pascal_case dotnet_naming_style.end_in_async.word_separator =
关键改动是required_return_type = Task, Task1`:
Task匹配非泛型异步返回类型Task1是C#中泛型Task`的内部表示形式,用于匹配所有泛型异步返回方法
这样修改后,async void类型的事件处理方法就不会再触发命名建议。
方法二:使用Roslyn分析器(更精准的场景识别)
如果.editorconfig的规则在部分IDE版本中对泛型类型支持有限,可以借助官方Roslyn分析器包:
- 安装
Microsoft.CodeAnalysis.NetAnalyzersNuGet包 - 启用规则AS0001: Async methods should have Async suffix
该规则默认会识别async void的事件处理方法场景,自动跳过命名检查,仅对返回Task/Task<T>的异步方法强制执行命名规范,无需额外配置。
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

