1+ # top-most EditorConfig file
2+ root = true
3+
4+ # Don't use tabs for indentation.
5+ [* ]
6+ indent_style = space
7+ # (Please don't specify an indent_size here; that has too many unintended consequences.)
8+
9+ # Code files
10+ [* .{cs,csx,vb,vbx} ]
11+ indent_size = 4
12+ insert_final_newline = true
13+ charset = utf-8
14+ end_of_line = crlf
15+
16+ # Xml project files
17+ [* .{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj} ]
18+ indent_size = 2
19+
20+ # Xml config files
21+ [* .{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct} ]
22+ indent_size = 2
23+
24+ # JSON files
25+ [* .json ]
26+ indent_size = 2
27+
28+ # Dotnet code style settings:
29+ [* .{cs,vb} ]
30+ # Sort using and Import directives with System.* appearing first
31+ dotnet_sort_system_directives_first = true
32+
33+ # Avoid "this." and "Me." if not necessary
34+ dotnet_style_qualification_for_field = false : error
35+ dotnet_style_qualification_for_property = false : error
36+ dotnet_style_qualification_for_method = false : error
37+ dotnet_style_qualification_for_event = false : error
38+
39+ # Use language keywords instead of framework type names for type references
40+ dotnet_style_predefined_type_for_locals_parameters_members = true : error
41+ dotnet_style_predefined_type_for_member_access = true : error
42+
43+ # Suggest more modern language features when available
44+ dotnet_style_object_initializer = true : suggestion
45+ dotnet_style_collection_initializer = true : suggestion
46+ dotnet_style_coalesce_expression = true : error
47+ dotnet_style_null_propagation = true : error
48+ dotnet_style_explicit_tuple_names = true : error
49+
50+ # Naming rule: private static fields should use pascal casing
51+ dotnet_naming_symbols.private_static_field.applicable_kinds = field
52+ dotnet_naming_symbols.private_static_field.applicable_accessibilities = private
53+ dotnet_naming_symbols.private_static_field.required_modifiers = static
54+ dotnet_naming_style.private_static_field.capitalization = pascal_case
55+ dotnet_naming_rule.private_static_field.severity = error
56+ dotnet_naming_rule.private_static_field.symbols = private_static_field
57+ dotnet_naming_rule.private_static_field.style = private_static_field
58+
59+ # Naming rule: private fields should use camel casing and use underscore as a prefix
60+ dotnet_naming_symbols.private_field.applicable_kinds = field
61+ dotnet_naming_symbols.private_field.applicable_accessibilities = private
62+ dotnet_naming_style.private_field.capitalization = camel_case
63+ dotnet_naming_style.private_field.required_prefix = _
64+ dotnet_naming_rule.private_field.severity = error
65+ dotnet_naming_rule.private_field.symbols = private_field
66+ dotnet_naming_rule.private_field.style = private_field
67+
68+ # Naming rule: non-private fields should use pascal casing
69+ dotnet_naming_symbols.non_private_field.applicable_kinds = field
70+ dotnet_naming_symbols.non_private_field.applicable_accessibilities = public,internal,friend,protected,protected_internal,protected_friend
71+ dotnet_naming_style.non_private_field.capitalization = pascal_case
72+ dotnet_naming_rule.non_private_field.severity = error
73+ dotnet_naming_rule.non_private_field.symbols = non_private_field
74+ dotnet_naming_rule.non_private_field.style = non_private_field
75+
76+ # Naming rule: parameters should use camel casing
77+ dotnet_naming_symbols.parameter.applicable_kinds = parameter
78+ dotnet_naming_style.parameter.capitalization = camel_case
79+ dotnet_naming_rule.parameter.severity = error
80+ dotnet_naming_rule.parameter.symbols = parameter
81+ dotnet_naming_rule.parameter.style = parameter
82+
83+ # Naming rule: interface types should use pascal casing with I as a prefix
84+ dotnet_naming_symbols.interface_type.applicable_kinds = interface
85+ dotnet_naming_style.interface_type.capitalization = pascal_case
86+ dotnet_naming_style.interface_type.required_prefix = I
87+ dotnet_naming_rule.interface_type.severity = error
88+ dotnet_naming_rule.interface_type.symbols = interface_type
89+ dotnet_naming_rule.interface_type.style = interface_type
90+
91+ # Naming rule: non-interface types should use pascal casing
92+ dotnet_naming_symbols.non_interface_type.applicable_kinds = class,struct,enum,delegate
93+ dotnet_naming_style.non_interface_type.capitalization = pascal_case
94+ dotnet_naming_rule.non_interface_type.severity = error
95+ dotnet_naming_rule.non_interface_type.symbols = non_interface_type
96+ dotnet_naming_rule.non_interface_type.style = non_interface_type
97+
98+ # Naming rule: methods, properties and events should use pascal casing
99+ dotnet_naming_symbols.member.applicable_kinds = method,property,event
100+ dotnet_naming_style.member.capitalization = pascal_case
101+ dotnet_naming_rule.member.severity = error
102+ dotnet_naming_rule.member.symbols = member
103+ dotnet_naming_rule.member.style = member
104+
105+ # CSharp code style settings:
106+
107+ # IDE0060: Remove unused parameter
108+ dotnet_code_quality_unused_parameters = non_public:suggestion
109+
110+ [* .cs ]
111+ # Prefer "var" everywhere
112+ csharp_style_var_for_built_in_types = true : suggestion
113+ csharp_style_var_when_type_is_apparent = true : error
114+ csharp_style_var_elsewhere = true : suggestion
115+
116+ # Prefer method-like constructs to have a block body
117+ csharp_style_expression_bodied_methods = false : none
118+ csharp_style_expression_bodied_constructors = false : error
119+ csharp_style_expression_bodied_operators = false : none
120+
121+ # Prefer property-like constructs to have an expression-body
122+ csharp_style_expression_bodied_properties = true : suggestion
123+ csharp_style_expression_bodied_indexers = true : suggestion
124+ csharp_style_expression_bodied_accessors = true : suggestion
125+
126+ # Suggest more modern language features when available
127+ csharp_style_pattern_matching_over_is_with_cast_check = true : suggestion
128+ csharp_style_pattern_matching_over_as_with_null_check = true : suggestion
129+ csharp_style_inlined_variable_declaration = true : suggestion
130+ csharp_style_throw_expression = true : suggestion
131+ csharp_style_conditional_delegate_call = true : suggestion
132+
133+ # Newline settings
134+ csharp_new_line_before_open_brace = all
135+ csharp_new_line_before_else = true
136+ csharp_new_line_before_catch = true
137+ csharp_new_line_before_finally = true
138+ csharp_new_line_before_members_in_object_initializers = true
139+ csharp_new_line_before_members_in_anonymous_types = true
140+
141+ # Spacing
142+ csharp_space_after_cast = false
143+ csharp_space_after_keywords_in_control_flow_statements = true
144+ csharp_space_between_method_call_parameter_list_parentheses = false
145+ csharp_space_between_method_declaration_parameter_list_parentheses = false
0 commit comments