Skip to content

Instantly share code, notes, and snippets.

@kuhlenh
Last active October 4, 2021 04:56
Show Gist options
  • Select an option

  • Save kuhlenh/5471666a7a2c57fea427e81cf0a41da8 to your computer and use it in GitHub Desktop.

Select an option

Save kuhlenh/5471666a7a2c57fea427e81cf0a41da8 to your computer and use it in GitHub Desktop.

Revisions

  1. Kasey Uhlenhuth revised this gist Jun 16, 2018. 1 changed file with 38 additions and 108 deletions.
    146 changes: 38 additions & 108 deletions .editorconfig
    Original file line number Diff line number Diff line change
    @@ -13,35 +13,8 @@ indent_size = 4
    insert_final_newline = true
    charset = utf-8-bom

    # Xml build files
    [*.builds]
    indent_size = 2

    # Xml files
    [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct,xml,stylecop}]
    indent_size = 2

    # Xml project files
    [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
    indent_size = 2

    # Json files
    [*.json]
    indent_size = 2

    # C++ Files
    [*.{cpp,h,in}]
    curly_bracket_next_line = true
    indent_brace_style = Allman

    # Shell scripts
    [*.sh]
    end_of_line = lf
    [*.{cmd, bat}]
    end_of_line = crlf

    ###############################
    # .NET OSS Coding Conventions #
    # .NET Coding Conventions #
    ###############################
    [*.{cs,vb}]
    # Organize usings
    @@ -57,34 +30,35 @@ dotnet_style_qualification_for_event = false:suggestion
    dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
    dotnet_style_predefined_type_for_member_access = true:suggestion

    # Parentheses preferences
    dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:none
    dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:none
    dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
    dotnet_style_parentheses_in_other_operators = never_if_unnecessary:none

    # Modifier preferences
    dotnet_style_require_accessibility_modifiers = always:suggestion
    dotnet_style_readonly_field = true:warning

    # Expression-level preferences
    dotnet_style_object_initializer = true:suggestion
    dotnet_style_collection_initializer = true:suggestion
    dotnet_style_explicit_tuple_names = true:suggestion
    dotnet_style_null_propagation = true:suggestion
    dotnet_style_coalesce_expression = true:suggestion
    dotnet_style_prefer_is_null_check_over_reference_equality_method = true:none
    dotnet_style_require_accessibility_modifiers = always:suggestion
    dotnet_prefer_inferred_tuple_names = true:suggestion
    dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion
    dotnet_style_prefer_auto_properties = true:none
    dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion
    dotnet_style_prefer_conditional_expression_over_return = true:suggestion

    ###############################
    # Naming Conventions #
    ###############################

    # Style Definitions
    dotnet_naming_style.pascal_case_style.capitalization = pascal_case

    dotnet_naming_style.camel_case_style.capitalization = camel_case

    dotnet_naming_style.camel_case_underscore_style.required_prefix = _
    dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case

    dotnet_naming_style.static_prefix_style.required_prefix = s_
    dotnet_naming_style.static_prefix_style.capitalization = camel_case

    dotnet_naming_style.I_prefix_style.required_prefix = I
    dotnet_naming_style.I_prefix_style.capitalization = pascal_case
    dotnet_naming_style.pascal_case_style.capitalization = pascal_case

    # Use PascalCase for constant fields
    dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
    @@ -94,59 +68,15 @@ dotnet_naming_symbols.constant_fields.applicable_kinds = field
    dotnet_naming_symbols.constant_fields.applicable_accessibilities = *
    dotnet_naming_symbols.constant_fields.required_modifiers = const

    # Use s_ prefix for static fields
    dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
    dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
    dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
    dotnet_naming_symbols.static_fields.applicable_kinds = field
    dotnet_naming_symbols.static_fields.applicable_accessibilities = *
    dotnet_naming_symbols.static_fields.required_modifiers = static

    # Use _camelCase for internal and private fields
    dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
    dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
    dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
    dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
    dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal

    # ROSLYN
    # Use PascalCase for public fields
    dotnet_naming_rule.pascal_case_for_public_fields.severity = suggestion
    dotnet_naming_rule.pascal_case_for_public_fields.symbols = public_fields
    dotnet_naming_rule.pascal_case_for_public_fields.style = pascal_case_style
    dotnet_naming_symbols.public_fields.applicable_kinds = field
    dotnet_naming_symbols.public_fields.applicable_accessibilities = public

    # Use _camelCase for all other fields
    dotnet_naming_rule.camel_case_for_other_fields.severity = suggestion
    dotnet_naming_rule.camel_case_for_other_fields.symbols = other_fields
    dotnet_naming_rule.camel_case_for_other_fields.style = camel_case_underscore_style
    dotnet_naming_symbols.other_fields.applicable_kinds = field
    dotnet_naming_symbols.other_fields.applicable_accessibilities = *

    # Interfaces must be PascalCase and have an I prefix
    dotnet_naming_rule.interfaces_start_with_I.severity = suggestion
    dotnet_naming_rule.interfaces_start_with_I.symbols = any_interface
    dotnet_naming_rule.interfaces_start_with_I.style = I_prefix_style
    dotnet_naming_symbols.any_interface.applicable_accessibilities = *
    dotnet_naming_symbols.any_interface.applicable_kinds = interface

    # Classes, structs, methods, enums, events, properties, namespaces, delegates must be PascalCase
    dotnet_naming_rule.general_naming.severity = suggestion
    dotnet_naming_rule.general_naming.symbols = general
    dotnet_naming_rule.general_naming.style = pascal_case_style
    dotnet_naming_symbols.general.applicable_kinds = class,struct,enum,property,method,event,namespace,delegate
    dotnet_naming_symbols.general.applicable_accessibilities = *

    # Everything else is camelCase
    dotnet_naming_rule.everything_else_naming.severity = suggestion
    dotnet_naming_rule.everything_else_naming.symbols = everything_else
    dotnet_naming_rule.everything_else_naming.style = camel_case_style
    dotnet_naming_symbols.everything_else.applicable_kinds = *
    dotnet_naming_symbols.everything_else.applicable_accessibilities = *


    ###############################
    # C# Coding Conventions #
    ###############################
    [*.cs]
    # Always use var
    csharp_style_var_for_built_in_types = true:suggestion
    csharp_style_var_when_type_is_apparent = true:suggestion
    csharp_style_var_elsewhere = true:suggestion

    # Expression-bodied members
    csharp_style_expression_bodied_methods = false:none
    csharp_style_expression_bodied_constructors = false:none
    @@ -158,17 +88,23 @@ csharp_style_expression_bodied_accessors = true:none
    # Pattern matching
    csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
    csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
    csharp_style_inlined_variable_declaration = true:suggestion

    # Null-checking preferences
    csharp_style_throw_expression = true:suggestion
    csharp_style_conditional_delegate_call = true:suggestion

    # Expression-level preferences
    # Modifier preferences
    csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

    # Expression-level preferences
    csharp_prefer_braces = true:suggestion
    csharp_style_deconstructed_variable_declaration = true:suggestion
    csharp_prefer_simple_default_expression = true:suggestion
    csharp_style_pattern_local_over_anonymous_function = true:suggestion
    csharp_style_inlined_variable_declaration = true:suggestion

    ###############################
    # .NET Formatting Rules #
    # C# Formatting Rules #
    ###############################
    # New line preferences
    csharp_new_line_before_open_brace = all
    @@ -191,19 +127,13 @@ csharp_space_between_method_call_parameter_list_parentheses = false
    csharp_space_between_method_declaration_parameter_list_parentheses = false
    csharp_space_between_parentheses = false

    # Wrapping preferences
    csharp_preserve_single_line_statements = true
    csharp_preserve_single_line_blocks = true

    ###############################
    # Roslyn-Specific Conventions #
    # VB Coding Conventions #
    ###############################
    # Always use var
    csharp_style_var_for_built_in_types = true:suggestion
    csharp_style_var_when_type_is_apparent = true:suggestion
    csharp_style_var_elsewhere = true:suggestion

    # Expression-level preferences
    csharp_prefer_braces = true:suggestion
    csharp_style_deconstructed_variable_declaration = true:suggestion
    csharp_prefer_simple_default_expression = true:suggestion
    csharp_style_pattern_local_over_anonymous_function = true:suggestion

    [*.vb]
    # Modifier preferences
    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
  2. Kasey Uhlenhuth revised this gist Mar 7, 2018. 1 changed file with 63 additions and 63 deletions.
    126 changes: 63 additions & 63 deletions .editorconfig
    Original file line number Diff line number Diff line change
    @@ -68,69 +68,6 @@ dotnet_style_require_accessibility_modifiers = always:suggestion
    dotnet_prefer_inferred_tuple_names = true:suggestion
    dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion

    [*.cs]
    # Expression-bodied members
    csharp_style_expression_bodied_methods = false:none
    csharp_style_expression_bodied_constructors = false:none
    csharp_style_expression_bodied_operators = false:none
    csharp_style_expression_bodied_properties = true:none
    csharp_style_expression_bodied_indexers = true:none
    csharp_style_expression_bodied_accessors = true:none

    # Pattern matching
    csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
    csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
    csharp_style_inlined_variable_declaration = true:suggestion

    # Null-checking preferences
    csharp_style_throw_expression = true:suggestion
    csharp_style_conditional_delegate_call = true:suggestion

    # Expression-level preferences
    csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

    [*.vb]
    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

    ###############################
    # .NET Formatting Rules #
    ###############################
    [*.cs]
    # New line preferences
    csharp_new_line_before_open_brace = all
    csharp_new_line_before_else = true
    csharp_new_line_before_catch = true
    csharp_new_line_before_finally = true
    csharp_new_line_before_members_in_object_initializers = true
    csharp_new_line_before_members_in_anonymous_types = true
    csharp_new_line_between_query_expression_clauses = true

    # Indentation preferences
    csharp_indent_case_contents = true
    csharp_indent_switch_labels = true
    csharp_indent_labels = flush_left

    # Space preferences
    csharp_space_after_cast = false
    csharp_space_after_keywords_in_control_flow_statements = true
    csharp_space_between_method_call_parameter_list_parentheses = false
    csharp_space_between_method_declaration_parameter_list_parentheses = false
    csharp_space_between_parentheses = false

    ###############################
    # Roslyn-Specific Conventions #
    ###############################
    # Always use var
    csharp_style_var_for_built_in_types = true:suggestion
    csharp_style_var_when_type_is_apparent = true:suggestion
    csharp_style_var_elsewhere = true:suggestion

    # Expression-level preferences
    csharp_prefer_braces = true:suggestion
    csharp_style_deconstructed_variable_declaration = true:suggestion
    csharp_prefer_simple_default_expression = true:suggestion
    csharp_style_pattern_local_over_anonymous_function = true:suggestion

    ###############################
    # Naming Conventions #
    ###############################
    @@ -207,3 +144,66 @@ dotnet_naming_rule.everything_else_naming.symbols = everything
    dotnet_naming_rule.everything_else_naming.style = camel_case_style
    dotnet_naming_symbols.everything_else.applicable_kinds = *
    dotnet_naming_symbols.everything_else.applicable_accessibilities = *


    [*.cs]
    # Expression-bodied members
    csharp_style_expression_bodied_methods = false:none
    csharp_style_expression_bodied_constructors = false:none
    csharp_style_expression_bodied_operators = false:none
    csharp_style_expression_bodied_properties = true:none
    csharp_style_expression_bodied_indexers = true:none
    csharp_style_expression_bodied_accessors = true:none

    # Pattern matching
    csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
    csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
    csharp_style_inlined_variable_declaration = true:suggestion

    # Null-checking preferences
    csharp_style_throw_expression = true:suggestion
    csharp_style_conditional_delegate_call = true:suggestion

    # Expression-level preferences
    csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

    ###############################
    # .NET Formatting Rules #
    ###############################
    # New line preferences
    csharp_new_line_before_open_brace = all
    csharp_new_line_before_else = true
    csharp_new_line_before_catch = true
    csharp_new_line_before_finally = true
    csharp_new_line_before_members_in_object_initializers = true
    csharp_new_line_before_members_in_anonymous_types = true
    csharp_new_line_between_query_expression_clauses = true

    # Indentation preferences
    csharp_indent_case_contents = true
    csharp_indent_switch_labels = true
    csharp_indent_labels = flush_left

    # Space preferences
    csharp_space_after_cast = false
    csharp_space_after_keywords_in_control_flow_statements = true
    csharp_space_between_method_call_parameter_list_parentheses = false
    csharp_space_between_method_declaration_parameter_list_parentheses = false
    csharp_space_between_parentheses = false

    ###############################
    # Roslyn-Specific Conventions #
    ###############################
    # Always use var
    csharp_style_var_for_built_in_types = true:suggestion
    csharp_style_var_when_type_is_apparent = true:suggestion
    csharp_style_var_elsewhere = true:suggestion

    # Expression-level preferences
    csharp_prefer_braces = true:suggestion
    csharp_style_deconstructed_variable_declaration = true:suggestion
    csharp_prefer_simple_default_expression = true:suggestion
    csharp_style_pattern_local_over_anonymous_function = true:suggestion

    [*.vb]
    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
  3. Kasey Uhlenhuth revised this gist Dec 11, 2017. 1 changed file with 2 additions and 4 deletions.
    6 changes: 2 additions & 4 deletions .editorconfig
    Original file line number Diff line number Diff line change
    @@ -65,6 +65,8 @@ dotnet_style_null_propagation = true:suggestion
    dotnet_style_coalesce_expression = true:suggestion
    dotnet_style_prefer_is_null_check_over_reference_equality_method = true:none
    dotnet_style_require_accessibility_modifiers = always:suggestion
    dotnet_prefer_inferred_tuple_names = true:suggestion
    dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion

    [*.cs]
    # Expression-bodied members
    @@ -85,14 +87,10 @@ csharp_style_throw_expression = true:suggestion
    csharp_style_conditional_delegate_call = true:suggestion

    # Expression-level preferences
    csharp_prefer_inferred_tuple_names = true:suggestion
    csharp_prefer_inferred_anonymous_type_member_names = true:suggestion
    csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

    [*.vb]
    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
    visual_basic_prefer_inferred_tuple_names = true:suggestion
    visual_basic_prefer_inferred_anonymous_type_member_names = true:suggestion

    ###############################
    # .NET Formatting Rules #
  4. Kasey Uhlenhuth created this gist Dec 11, 2017.
    211 changes: 211 additions & 0 deletions .editorconfig
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,211 @@
    ###############################
    # Core EditorConfig Options #
    ###############################
    root = true

    # All files
    [*]
    indent_style = space

    # Code files
    [*.{cs,csx,vb,vbx}]
    indent_size = 4
    insert_final_newline = true
    charset = utf-8-bom

    # Xml build files
    [*.builds]
    indent_size = 2

    # Xml files
    [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct,xml,stylecop}]
    indent_size = 2

    # Xml project files
    [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
    indent_size = 2

    # Json files
    [*.json]
    indent_size = 2

    # C++ Files
    [*.{cpp,h,in}]
    curly_bracket_next_line = true
    indent_brace_style = Allman

    # Shell scripts
    [*.sh]
    end_of_line = lf
    [*.{cmd, bat}]
    end_of_line = crlf

    ###############################
    # .NET OSS Coding Conventions #
    ###############################
    [*.{cs,vb}]
    # Organize usings
    dotnet_sort_system_directives_first = true

    # Avoid this. unless absolutely necessary
    dotnet_style_qualification_for_field = false:suggestion
    dotnet_style_qualification_for_property = false:suggestion
    dotnet_style_qualification_for_method = false:suggestion
    dotnet_style_qualification_for_event = false:suggestion

    # Use language keywords instead of BCL types
    dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
    dotnet_style_predefined_type_for_member_access = true:suggestion

    # Expression-level preferences
    dotnet_style_object_initializer = true:suggestion
    dotnet_style_collection_initializer = true:suggestion
    dotnet_style_explicit_tuple_names = true:suggestion
    dotnet_style_null_propagation = true:suggestion
    dotnet_style_coalesce_expression = true:suggestion
    dotnet_style_prefer_is_null_check_over_reference_equality_method = true:none
    dotnet_style_require_accessibility_modifiers = always:suggestion

    [*.cs]
    # Expression-bodied members
    csharp_style_expression_bodied_methods = false:none
    csharp_style_expression_bodied_constructors = false:none
    csharp_style_expression_bodied_operators = false:none
    csharp_style_expression_bodied_properties = true:none
    csharp_style_expression_bodied_indexers = true:none
    csharp_style_expression_bodied_accessors = true:none

    # Pattern matching
    csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
    csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
    csharp_style_inlined_variable_declaration = true:suggestion

    # Null-checking preferences
    csharp_style_throw_expression = true:suggestion
    csharp_style_conditional_delegate_call = true:suggestion

    # Expression-level preferences
    csharp_prefer_inferred_tuple_names = true:suggestion
    csharp_prefer_inferred_anonymous_type_member_names = true:suggestion
    csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion

    [*.vb]
    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
    visual_basic_prefer_inferred_tuple_names = true:suggestion
    visual_basic_prefer_inferred_anonymous_type_member_names = true:suggestion

    ###############################
    # .NET Formatting Rules #
    ###############################
    [*.cs]
    # New line preferences
    csharp_new_line_before_open_brace = all
    csharp_new_line_before_else = true
    csharp_new_line_before_catch = true
    csharp_new_line_before_finally = true
    csharp_new_line_before_members_in_object_initializers = true
    csharp_new_line_before_members_in_anonymous_types = true
    csharp_new_line_between_query_expression_clauses = true

    # Indentation preferences
    csharp_indent_case_contents = true
    csharp_indent_switch_labels = true
    csharp_indent_labels = flush_left

    # Space preferences
    csharp_space_after_cast = false
    csharp_space_after_keywords_in_control_flow_statements = true
    csharp_space_between_method_call_parameter_list_parentheses = false
    csharp_space_between_method_declaration_parameter_list_parentheses = false
    csharp_space_between_parentheses = false

    ###############################
    # Roslyn-Specific Conventions #
    ###############################
    # Always use var
    csharp_style_var_for_built_in_types = true:suggestion
    csharp_style_var_when_type_is_apparent = true:suggestion
    csharp_style_var_elsewhere = true:suggestion

    # Expression-level preferences
    csharp_prefer_braces = true:suggestion
    csharp_style_deconstructed_variable_declaration = true:suggestion
    csharp_prefer_simple_default_expression = true:suggestion
    csharp_style_pattern_local_over_anonymous_function = true:suggestion

    ###############################
    # Naming Conventions #
    ###############################

    # Style Definitions
    dotnet_naming_style.pascal_case_style.capitalization = pascal_case

    dotnet_naming_style.camel_case_style.capitalization = camel_case

    dotnet_naming_style.camel_case_underscore_style.required_prefix = _
    dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case

    dotnet_naming_style.static_prefix_style.required_prefix = s_
    dotnet_naming_style.static_prefix_style.capitalization = camel_case

    dotnet_naming_style.I_prefix_style.required_prefix = I
    dotnet_naming_style.I_prefix_style.capitalization = pascal_case

    # Use PascalCase for constant fields
    dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
    dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
    dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
    dotnet_naming_symbols.constant_fields.applicable_kinds = field
    dotnet_naming_symbols.constant_fields.applicable_accessibilities = *
    dotnet_naming_symbols.constant_fields.required_modifiers = const

    # Use s_ prefix for static fields
    dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
    dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
    dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
    dotnet_naming_symbols.static_fields.applicable_kinds = field
    dotnet_naming_symbols.static_fields.applicable_accessibilities = *
    dotnet_naming_symbols.static_fields.required_modifiers = static

    # Use _camelCase for internal and private fields
    dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
    dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
    dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
    dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
    dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal

    # ROSLYN
    # Use PascalCase for public fields
    dotnet_naming_rule.pascal_case_for_public_fields.severity = suggestion
    dotnet_naming_rule.pascal_case_for_public_fields.symbols = public_fields
    dotnet_naming_rule.pascal_case_for_public_fields.style = pascal_case_style
    dotnet_naming_symbols.public_fields.applicable_kinds = field
    dotnet_naming_symbols.public_fields.applicable_accessibilities = public

    # Use _camelCase for all other fields
    dotnet_naming_rule.camel_case_for_other_fields.severity = suggestion
    dotnet_naming_rule.camel_case_for_other_fields.symbols = other_fields
    dotnet_naming_rule.camel_case_for_other_fields.style = camel_case_underscore_style
    dotnet_naming_symbols.other_fields.applicable_kinds = field
    dotnet_naming_symbols.other_fields.applicable_accessibilities = *

    # Interfaces must be PascalCase and have an I prefix
    dotnet_naming_rule.interfaces_start_with_I.severity = suggestion
    dotnet_naming_rule.interfaces_start_with_I.symbols = any_interface
    dotnet_naming_rule.interfaces_start_with_I.style = I_prefix_style
    dotnet_naming_symbols.any_interface.applicable_accessibilities = *
    dotnet_naming_symbols.any_interface.applicable_kinds = interface

    # Classes, structs, methods, enums, events, properties, namespaces, delegates must be PascalCase
    dotnet_naming_rule.general_naming.severity = suggestion
    dotnet_naming_rule.general_naming.symbols = general
    dotnet_naming_rule.general_naming.style = pascal_case_style
    dotnet_naming_symbols.general.applicable_kinds = class,struct,enum,property,method,event,namespace,delegate
    dotnet_naming_symbols.general.applicable_accessibilities = *

    # Everything else is camelCase
    dotnet_naming_rule.everything_else_naming.severity = suggestion
    dotnet_naming_rule.everything_else_naming.symbols = everything_else
    dotnet_naming_rule.everything_else_naming.style = camel_case_style
    dotnet_naming_symbols.everything_else.applicable_kinds = *
    dotnet_naming_symbols.everything_else.applicable_accessibilities = *