root = true [*] charset = utf-8 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true indent_style = space indent_size = 4 [*.{json,js,jsx,ts,tsx,yml,yaml,css,html}] indent_size = 2 [*.{csproj,props,targets,xml}] indent_size = 2 [*.md] trim_trailing_whitespace = false [*.cs] # Namespaces csharp_style_namespace_declarations = file_scoped:warning # usings dotnet_sort_system_directives_first = true csharp_using_directive_placement = outside_namespace:warning # var / modern C# csharp_style_var_when_type_is_apparent = true:suggestion csharp_prefer_braces = true:suggestion csharp_style_prefer_primary_constructors = true:suggestion dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning # Prefer readonly dotnet_style_readonly_field = true:warning # Quiet a few analyzer rules that are noisy for a young codebase / skeleton. # CA1515: types can be internal — intentionally relaxed (public module/contract surface). dotnet_diagnostic.CA1515.severity = none # CA1812: internal class never instantiated — false positives on DI-resolved types. dotnet_diagnostic.CA1812.severity = none # CA2007: ConfigureAwait — not needed in ASP.NET Core / worker (no sync context). dotnet_diagnostic.CA2007.severity = none # CA1848 / CA1873: LoggerMessage-delegate perf rules — opt-in perf, not worth enforcing in V1. dotnet_diagnostic.CA1848.severity = none dotnet_diagnostic.CA1873.severity = none # EF Core migrations are tool-generated — don't style-police them. [**/Migrations/*.cs] generated_code = true