1+ # top-most EditorConfig file
2+ root = true
3+
4+ # Indentation and spacing
5+
6+ # All files
7+ [* ]
8+ charset = utf-8
9+ indent_style = space
10+ trim_trailing_whitespace = true
11+
12+ # Code files
13+ [* .{cs,csx,vb,vbx,razor,cshtml} ]
14+ indent_size = 4
15+ tab_width = 4
16+ charset = utf-8-bom
17+ end_of_line = crlf
18+ insert_final_newline = false
19+
20+ # Project files
21+ [* .{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj} ]
22+ indent_size = 2
23+
24+ # Config files
25+ [* .{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct,xml,tasks} ]
26+ indent_size = 2
27+
28+ # CI/CD and YAML configuration
29+ [* .{yml} ]
30+ indent_size = 2
31+
32+ # JSON files
33+ [* .json ]
34+ indent_size = 2
35+
36+ # ### .NET Coding Conventions ####
37+ # Code files
38+ [* .{cs,vb} ]
39+
40+ # Organize usings
41+ dotnet_separate_import_directive_groups = false
42+ dotnet_sort_system_directives_first = true
43+ file_header_template = unset
44+
45+ # Do not use "this." or "Me." before member name
46+ dotnet_style_qualification_for_event = false :suggestion
47+ dotnet_style_qualification_for_field = false :suggestion
48+ dotnet_style_qualification_for_method = false :suggestion
49+ dotnet_style_qualification_for_property = false :suggestion
50+
51+ # Use language keywords instead of framework type names for type references
52+ dotnet_style_predefined_type_for_locals_parameters_members = true :suggestion
53+ dotnet_style_predefined_type_for_member_access = true :suggestion
54+
55+ # Parentheses preferences
56+ dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
57+ dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
58+ dotnet_style_parentheses_in_other_operators = never_if_unnecessary
59+ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
60+
61+ # Do not write unnecessary modifiers
62+ dotnet_style_require_accessibility_modifiers = omit_if_default
63+
64+ # Use more modern language features when available
65+ dotnet_style_object_initializer = true
66+ dotnet_style_collection_initializer = true
67+ dotnet_style_coalesce_expression = true :suggestion
68+ dotnet_style_null_propagation = true :suggestion
69+ dotnet_style_explicit_tuple_names = true
70+ dotnet_style_namespace_match_folder = true
71+ dotnet_style_operator_placement_when_wrapping = beginning_of_line
72+ dotnet_style_prefer_auto_properties = false :silent
73+ dotnet_style_prefer_collection_expression = when_types_loosely_match
74+ dotnet_style_prefer_compound_assignment = true
75+ dotnet_style_prefer_conditional_expression_over_assignment = false
76+ dotnet_style_prefer_conditional_expression_over_return = false
77+ dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
78+ dotnet_style_prefer_inferred_anonymous_type_member_names = true
79+ dotnet_style_prefer_inferred_tuple_names = true
80+ dotnet_style_prefer_is_null_check_over_reference_equality_method = true :suggestion
81+ dotnet_style_prefer_simplified_boolean_expressions = true
82+ dotnet_style_prefer_simplified_interpolation = true
83+
84+ # Use readonly if field never reassigned
85+ dotnet_style_readonly_field = true
86+
87+ # Remove unused parameters
88+ dotnet_code_quality_unused_parameters = all
89+
90+ # Suppression preferences
91+ dotnet_remove_unnecessary_suppression_exclusions = none
92+
93+ # New line preferences
94+ dotnet_style_allow_multiple_blank_lines_experimental = false
95+ dotnet_style_allow_statement_immediately_after_block_experimental = true
96+
97+ # ### Naming styles ####
98+
99+ # Naming rules
100+
101+ dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
102+ dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
103+ dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
104+
105+ dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
106+ dotnet_naming_rule.types_should_be_pascal_case.symbols = types
107+ dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
108+
109+ dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
110+ dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
111+ dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
112+
113+ dotnet_naming_rule.field_members_should_be_camel_case.severity = suggestion
114+ dotnet_naming_rule.field_members_should_be_camel_case.symbols = field
115+ dotnet_naming_rule.field_members_should_be_camel_case.style = camel_case
116+
117+ dotnet_naming_rule.const_field_members_should_be_pascal_case.severity = suggestion
118+ dotnet_naming_rule.const_field_members_should_be_pascal_case.symbols = const_field
119+ dotnet_naming_rule.const_field_members_should_be_pascal_case.style = pascal_case
120+
121+ # Symbol specifications
122+
123+ dotnet_naming_symbols.interface.applicable_kinds = interface
124+ dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
125+
126+ dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
127+ dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
128+
129+ dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
130+ dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
131+
132+ dotnet_naming_symbols.field.applicable_kinds = field
133+ dotnet_naming_symbols.field.applicable_accessibilities = *
134+
135+ dotnet_naming_symbols.const_field.applicable_kinds = field
136+ dotnet_naming_symbols.const_field.applicable_accessibilities = *
137+ dotnet_naming_symbols.const_field.required_modifiers = const
138+
139+ # Naming styles
140+
141+ dotnet_naming_style.pascal_case.required_prefix =
142+ dotnet_naming_style.pascal_case.required_suffix =
143+ dotnet_naming_style.pascal_case.word_separator =
144+ dotnet_naming_style.pascal_case.capitalization = pascal_case
145+
146+ dotnet_naming_style.begins_with_i.required_prefix = I
147+ dotnet_naming_style.begins_with_i.required_suffix =
148+ dotnet_naming_style.begins_with_i.word_separator =
149+ dotnet_naming_style.begins_with_i.capitalization = pascal_case
150+
151+ dotnet_naming_style.camel_case.capitalization = camel_case
152+
153+ # ### C# Code Style ####
154+ [* .cs ]
155+
156+ # Prefer "var" instead of explicit type name
157+ csharp_style_var_for_built_in_types = false :silent
158+ csharp_style_var_when_type_is_apparent = false :silent
159+ csharp_style_var_elsewhere = false :silent
160+
161+ # Prefer "=>" instead "return" in methods
162+ csharp_style_expression_bodied_accessors = false :silent
163+ csharp_style_expression_bodied_constructors = false :silent
164+ csharp_style_expression_bodied_indexers = false :silent
165+ csharp_style_expression_bodied_lambdas = true :silent
166+ csharp_style_expression_bodied_local_functions = true :silent
167+ csharp_style_expression_bodied_methods = false :silent
168+ csharp_style_expression_bodied_operators = false :silent
169+ csharp_style_expression_bodied_properties = false :silent
170+
171+ # Use more modern language features when available
172+ csharp_style_pattern_matching_over_as_with_null_check = true :suggestion
173+ csharp_style_pattern_matching_over_is_with_cast_check = true :suggestion
174+ csharp_style_prefer_extended_property_pattern = true :suggestion
175+ csharp_style_prefer_not_pattern = true :suggestion
176+ csharp_style_prefer_pattern_matching = true :silent
177+ csharp_style_prefer_switch_expression = true :suggestion
178+
179+ # Null-checking preferences
180+ csharp_style_conditional_delegate_call = true :suggestion
181+
182+ # Modifier preferences
183+ csharp_prefer_static_local_function = true :suggestion
184+ csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion
185+ csharp_style_prefer_readonly_struct = true :suggestion
186+ csharp_style_prefer_readonly_struct_member = true :suggestion
187+
188+ # Code-block preferences
189+ csharp_prefer_braces = false :silent
190+ csharp_prefer_simple_using_statement = false :suggestion
191+ csharp_style_namespace_declarations = block_scoped:silent
192+ csharp_style_prefer_method_group_conversion = true :silent
193+ csharp_style_prefer_primary_constructors = true :suggestion
194+ csharp_style_prefer_top_level_statements = true :silent
195+
196+ # Expression-level preferences
197+ csharp_prefer_simple_default_expression = false
198+ csharp_style_deconstructed_variable_declaration = true :suggestion
199+ csharp_style_implicit_object_creation_when_type_is_apparent = true :suggestion
200+ csharp_style_inlined_variable_declaration = true :suggestion
201+ csharp_style_prefer_index_operator = true :suggestion
202+ csharp_style_prefer_local_over_anonymous_function = true :suggestion
203+ csharp_style_prefer_null_check_over_type_check = true :suggestion
204+ csharp_style_prefer_range_operator = true :suggestion
205+ csharp_style_prefer_tuple_swap = true :suggestion
206+ csharp_style_prefer_utf8_string_literals = true :suggestion
207+ csharp_style_throw_expression = true :suggestion
208+ csharp_style_unused_value_assignment_preference = discard_variable:suggestion
209+ csharp_style_unused_value_expression_statement_preference = discard_variable:silent
210+
211+ # 'using' directive preferences
212+ csharp_using_directive_placement = outside_namespace:silent
213+
214+
215+ # New line preferences
216+ csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = false
217+ csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
218+ csharp_style_allow_embedded_statements_on_same_line_experimental = true
219+
220+ # New line preferences
221+ csharp_new_line_before_catch = true
222+ csharp_new_line_before_else = true
223+ csharp_new_line_before_finally = true
224+ csharp_new_line_before_members_in_anonymous_types = true :suggestion
225+ csharp_new_line_before_members_in_object_initializers = true :suggestion
226+ csharp_new_line_before_open_brace = none
227+ csharp_new_line_between_query_expression_clauses = true
228+
229+ # Indentation preferences
230+ csharp_indent_block_contents = true
231+ csharp_indent_braces = false
232+ csharp_indent_case_contents = true
233+ csharp_indent_case_contents_when_block = false
234+ csharp_indent_labels = one_less_than_current
235+ csharp_indent_switch_labels = true
236+
237+ # Space preferences
238+ csharp_space_after_cast = false
239+ csharp_space_after_colon_in_inheritance_clause = true
240+ csharp_space_after_comma = true
241+ csharp_space_after_dot = false
242+ csharp_space_after_keywords_in_control_flow_statements = false
243+ csharp_space_after_semicolon_in_for_statement = true
244+ csharp_space_around_binary_operators = before_and_after
245+ csharp_space_around_declaration_statements = false
246+ csharp_space_before_colon_in_inheritance_clause = true
247+ csharp_space_before_comma = false
248+ csharp_space_before_dot = false
249+ csharp_space_before_open_square_brackets = false
250+ csharp_space_before_semicolon_in_for_statement = false
251+ csharp_space_between_empty_square_brackets = false
252+ csharp_space_between_method_call_empty_parameter_list_parentheses = false
253+ csharp_space_between_method_call_name_and_opening_parenthesis = false
254+ csharp_space_between_method_call_parameter_list_parentheses = false
255+ csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
256+ csharp_space_between_method_declaration_name_and_open_parenthesis = false
257+ csharp_space_between_method_declaration_parameter_list_parentheses = false
258+ csharp_space_between_parentheses = false
259+ csharp_space_between_square_brackets = false
260+
261+ # Wrapping preferences
262+ csharp_preserve_single_line_blocks = true
263+ csharp_preserve_single_line_statements = true
264+
265+
266+ # ### VB Code Style ####
267+ [* .vb ]
268+ # Modifier preferences
269+ visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion
0 commit comments