Replaces configuration files and update project structure
This commit is contained in:
		@@ -10,5 +10,5 @@ trim_trailing_whitespace = true
 | 
			
		||||
[*.sh]
 | 
			
		||||
end_of_line = lf
 | 
			
		||||
 | 
			
		||||
[**/Migrations/*.cs]
 | 
			
		||||
[{*.Generated.*.cs,Migrations/*,Scripts/*}]
 | 
			
		||||
generated_code = true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										157
									
								
								.globalconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								.globalconfig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,157 @@
 | 
			
		||||
is_global = true
 | 
			
		||||
 | 
			
		||||
# Ruleset replacement
 | 
			
		||||
dotnet_diagnostic.CA2007.severity = none # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2007
 | 
			
		||||
dotnet_diagnostic.CA1303.severity = none # https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1303
 | 
			
		||||
 | 
			
		||||
# Organize usings
 | 
			
		||||
dotnet_sort_system_directives_first = true
 | 
			
		||||
dotnet_separate_import_directive_groups = true
 | 
			
		||||
csharp_using_directive_placement = inside_namespace:suggestion
 | 
			
		||||
csharp_prefer_simple_using_statement = true:suggestion
 | 
			
		||||
csharp_style_namespace_declarations = file_scoped:warning
 | 
			
		||||
# this. preferences
 | 
			
		||||
dotnet_style_qualification_for_field = false:none
 | 
			
		||||
dotnet_style_qualification_for_property = false:none
 | 
			
		||||
dotnet_style_qualification_for_method = false:none
 | 
			
		||||
dotnet_style_qualification_for_event = false:none
 | 
			
		||||
# Language keywords vs BCL types preferences
 | 
			
		||||
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:silent
 | 
			
		||||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
 | 
			
		||||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
 | 
			
		||||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
 | 
			
		||||
# Modifier preferences
 | 
			
		||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
 | 
			
		||||
dotnet_style_readonly_field = 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:suggestion
 | 
			
		||||
dotnet_style_prefer_inferred_tuple_names = true:suggestion
 | 
			
		||||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
 | 
			
		||||
dotnet_style_prefer_auto_properties = true:silent
 | 
			
		||||
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_rule.private_instance_fields_rule.style            = lower_camel_case_style
 | 
			
		||||
dotnet_naming_rule.private_static_fields_rule.style              = lower_camel_case_style
 | 
			
		||||
# 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
 | 
			
		||||
###############################
 | 
			
		||||
# C# Coding Conventions       #
 | 
			
		||||
###############################
 | 
			
		||||
# var preferences
 | 
			
		||||
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 = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_constructors = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_operators = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_properties = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_indexers = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_accessors = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_lambdas = when_on_single_line :suggestion
 | 
			
		||||
csharp_style_expression_bodied_local_functions = when_on_single_line :suggestion
 | 
			
		||||
# Pattern matching preferences
 | 
			
		||||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
 | 
			
		||||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
 | 
			
		||||
# Null-checking preferences
 | 
			
		||||
csharp_style_throw_expression = true:suggestion
 | 
			
		||||
csharp_style_conditional_delegate_call = true:suggestion
 | 
			
		||||
# 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:none
 | 
			
		||||
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
 | 
			
		||||
# Unused value preferences
 | 
			
		||||
csharp_style_unused_value_expression_statement_preference = discard_variable:none
 | 
			
		||||
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
 | 
			
		||||
## Index and Range preferences
 | 
			
		||||
csharp_style_prefer_index_operator = true:suggestion
 | 
			
		||||
csharp_style_prefer_range_operator = true:suggestion
 | 
			
		||||
csharp_prefer_static_local_function = true:suggestion
 | 
			
		||||
csharp_style_prefer_switch_expression = true:suggestion
 | 
			
		||||
###############################
 | 
			
		||||
# C# 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
 | 
			
		||||
csharp_indent_block_contents = true
 | 
			
		||||
csharp_indent_braces = false
 | 
			
		||||
csharp_indent_case_contents_when_block = true
 | 
			
		||||
# 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
 | 
			
		||||
csharp_space_before_colon_in_inheritance_clause = true
 | 
			
		||||
csharp_space_after_colon_in_inheritance_clause = true
 | 
			
		||||
csharp_space_around_binary_operators = before_and_after
 | 
			
		||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
 | 
			
		||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
 | 
			
		||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
 | 
			
		||||
csharp_space_between_method_declaration_name_and_open_parenthesis = false
 | 
			
		||||
csharp_space_after_comma = true
 | 
			
		||||
csharp_space_before_comma = false
 | 
			
		||||
csharp_space_after_dot = false
 | 
			
		||||
csharp_space_before_dot = false
 | 
			
		||||
csharp_space_after_semicolon_in_for_statement = true
 | 
			
		||||
csharp_space_before_semicolon_in_for_statement = false
 | 
			
		||||
csharp_space_around_declaration_statements = false
 | 
			
		||||
csharp_space_before_open_square_brackets = false
 | 
			
		||||
csharp_space_between_empty_square_brackets = false
 | 
			
		||||
csharp_space_between_square_brackets = false
 | 
			
		||||
# Wrapping preferences
 | 
			
		||||
csharp_preserve_single_line_statements = true
 | 
			
		||||
csharp_preserve_single_line_blocks = true
 | 
			
		||||
###############################
 | 
			
		||||
# VB Coding Conventions       #
 | 
			
		||||
###############################
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
###############################
 | 
			
		||||
# Extra Rules                 #
 | 
			
		||||
###############################
 | 
			
		||||
 | 
			
		||||
# dotnet_naming_rule.private_constants_rule.severity = warning
 | 
			
		||||
# dotnet_naming_rule.private_constants_rule.style = upper_camel_case_style
 | 
			
		||||
# dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
 | 
			
		||||
# dotnet_naming_rule.private_instance_fields_rule.severity = warning
 | 
			
		||||
dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style
 | 
			
		||||
# dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols
 | 
			
		||||
# dotnet_naming_rule.private_static_fields_rule.severity = warning
 | 
			
		||||
dotnet_naming_rule.private_static_fields_rule.style = lower_camel_case_style
 | 
			
		||||
# dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols
 | 
			
		||||
# dotnet_naming_style.prefix_private_field_with_underscore.required_prefix = _
 | 
			
		||||
							
								
								
									
										28
									
								
								.runsettings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.runsettings
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<RunSettings>
 | 
			
		||||
  <RunConfiguration>
 | 
			
		||||
    <ResultsDirectory>.\TestResults</ResultsDirectory>
 | 
			
		||||
    <DisableAppDomain>true</DisableAppDomain>
 | 
			
		||||
  </RunConfiguration>
 | 
			
		||||
  <xUnit>
 | 
			
		||||
    <Culture>invariant</Culture>
 | 
			
		||||
    <LongRunningTestSeconds>5</LongRunningTestSeconds>
 | 
			
		||||
  </xUnit>
 | 
			
		||||
  <DataCollectionRunSettings>
 | 
			
		||||
    <DataCollectors>
 | 
			
		||||
      <DataCollector friendlyName="Code Coverage">
 | 
			
		||||
        <Configuration>
 | 
			
		||||
          <Format>cobertura</Format>
 | 
			
		||||
          <CoverageFileName>coverage.xml</CoverageFileName>
 | 
			
		||||
          <ExcludeByAttribute>ObsoleteAttribute,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute>
 | 
			
		||||
          <ExcludeByFile>**/tests/**.cs,**/samples/**.cs</ExcludeByFile>
 | 
			
		||||
          <SingleHit>false</SingleHit>
 | 
			
		||||
          <UseSourceLink>true</UseSourceLink>
 | 
			
		||||
          <IncludeTestAssembly>false</IncludeTestAssembly>
 | 
			
		||||
          <SkipAutoProps>true</SkipAutoProps>
 | 
			
		||||
          <DeterministicReport>true</DeterministicReport>
 | 
			
		||||
        </Configuration>
 | 
			
		||||
      </DataCollector>
 | 
			
		||||
    </DataCollectors>
 | 
			
		||||
  </DataCollectionRunSettings>
 | 
			
		||||
</RunSettings>
 | 
			
		||||
							
								
								
									
										1
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
			
		||||
../.config/.vscode/settings.json
 | 
			
		||||
							
								
								
									
										1
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
			
		||||
../.config/.vscode/tasks-dotnet.json
 | 
			
		||||
							
								
								
									
										190
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,190 @@
 | 
			
		||||
{
 | 
			
		||||
  "version": "2.0.0",
 | 
			
		||||
  "tasks": [
 | 
			
		||||
    {
 | 
			
		||||
      "label": "restore",
 | 
			
		||||
      "command": "dotnet",
 | 
			
		||||
      "type": "shell",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "restore",
 | 
			
		||||
        "--verbosity",
 | 
			
		||||
        "minimal",
 | 
			
		||||
        "-bl:logs\\restore.binlog"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": {
 | 
			
		||||
        "kind": "build",
 | 
			
		||||
        "isDefault": true
 | 
			
		||||
      },
 | 
			
		||||
      "presentation": {
 | 
			
		||||
        "reveal": "never",
 | 
			
		||||
        "panel": "shared"
 | 
			
		||||
      },
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "label": "build",
 | 
			
		||||
      "command": "dotnet",
 | 
			
		||||
      "type": "shell",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "build",
 | 
			
		||||
        "--configuration",
 | 
			
		||||
        "Release",
 | 
			
		||||
        "--no-restore",
 | 
			
		||||
        "--nologo",
 | 
			
		||||
        "--verbosity",
 | 
			
		||||
        "minimal",
 | 
			
		||||
        "/property:GenerateFullPaths=true",
 | 
			
		||||
        "/consoleloggerparameters:NoSummary",
 | 
			
		||||
        "/p:TF_BUILD=true",
 | 
			
		||||
        "-bl:logs\\build.binlog"
 | 
			
		||||
      ],
 | 
			
		||||
      "dependsOrder": "sequence",
 | 
			
		||||
      "dependsOn": [
 | 
			
		||||
        "restore"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": "build",
 | 
			
		||||
      "presentation": {
 | 
			
		||||
        "reveal": "silent",
 | 
			
		||||
        "panel": "shared",
 | 
			
		||||
        "clear": true
 | 
			
		||||
      },
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "label": "test",
 | 
			
		||||
      "command": "dotnet",
 | 
			
		||||
      "type": "shell",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "test",
 | 
			
		||||
        "--configuration",
 | 
			
		||||
        "Release",
 | 
			
		||||
        "--no-build",
 | 
			
		||||
        "--verbosity",
 | 
			
		||||
        "normal",
 | 
			
		||||
        "--collect:'Code Coverage'",
 | 
			
		||||
        "-bl:logs\\test.binlog"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": {
 | 
			
		||||
        "kind": "test",
 | 
			
		||||
        "isDefault": true
 | 
			
		||||
      },
 | 
			
		||||
      "dependsOrder": "sequence",
 | 
			
		||||
      "dependsOn": [
 | 
			
		||||
        "build"
 | 
			
		||||
      ],
 | 
			
		||||
      "presentation": {
 | 
			
		||||
        "echo": true,
 | 
			
		||||
        "reveal": "always",
 | 
			
		||||
        "focus": false,
 | 
			
		||||
        "panel": "shared",
 | 
			
		||||
        "showReuseMessage": true,
 | 
			
		||||
        "clear": true
 | 
			
		||||
      },
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "label": "pack",
 | 
			
		||||
      "command": "dotnet",
 | 
			
		||||
      "type": "shell",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "pack",
 | 
			
		||||
        "--configuration",
 | 
			
		||||
        "Release",
 | 
			
		||||
        "--no-restore",
 | 
			
		||||
        "--nologo",
 | 
			
		||||
        "--verbosity",
 | 
			
		||||
        "minimal",
 | 
			
		||||
        "--output",
 | 
			
		||||
        "packages",
 | 
			
		||||
        "/property:GenerateFullPaths=true",
 | 
			
		||||
        "/consoleloggerparameters:NoSummary",
 | 
			
		||||
        "/p:TF_BUILD=true",
 | 
			
		||||
        "-bl:logs\\pack.binlog"
 | 
			
		||||
      ],
 | 
			
		||||
      "dependsOrder": "sequence",
 | 
			
		||||
      "dependsOn": [
 | 
			
		||||
        "publish"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": {
 | 
			
		||||
        "kind": "build",
 | 
			
		||||
        "isDefault": true
 | 
			
		||||
      },
 | 
			
		||||
      "presentation": {
 | 
			
		||||
        "echo": true,
 | 
			
		||||
        "reveal": "always",
 | 
			
		||||
        "focus": false,
 | 
			
		||||
        "panel": "shared",
 | 
			
		||||
        "showReuseMessage": true,
 | 
			
		||||
        "clear": true
 | 
			
		||||
      },
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "label": "publish",
 | 
			
		||||
      "command": "dotnet",
 | 
			
		||||
      "type": "shell",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "publish",
 | 
			
		||||
        "--configuration",
 | 
			
		||||
        "Release",
 | 
			
		||||
        "--no-restore",
 | 
			
		||||
        "--no-build",
 | 
			
		||||
        "--nologo",
 | 
			
		||||
        "/property:GenerateFullPaths=true",
 | 
			
		||||
        "/consoleloggerparameters:NoSummary",
 | 
			
		||||
        "/p:TF_BUILD=true",
 | 
			
		||||
        "-bl:logs\\publish.binlog"
 | 
			
		||||
      ],
 | 
			
		||||
      "dependsOrder": "sequence",
 | 
			
		||||
      "dependsOn": [
 | 
			
		||||
        "test"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": {
 | 
			
		||||
        "kind": "build",
 | 
			
		||||
        "isDefault": true
 | 
			
		||||
      },
 | 
			
		||||
      "presentation": {
 | 
			
		||||
        "echo": true,
 | 
			
		||||
        "reveal": "never",
 | 
			
		||||
        "focus": false,
 | 
			
		||||
        "panel": "shared",
 | 
			
		||||
        "showReuseMessage": true,
 | 
			
		||||
        "clear": true
 | 
			
		||||
      },
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "label": "clean",
 | 
			
		||||
      "command": "dotnet",
 | 
			
		||||
      "type": "shell",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "clean",
 | 
			
		||||
        "--configuration",
 | 
			
		||||
        "Release",
 | 
			
		||||
        "--verbosity",
 | 
			
		||||
        "minimal"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": {
 | 
			
		||||
        "kind": "build",
 | 
			
		||||
        "isDefault": true
 | 
			
		||||
      },
 | 
			
		||||
      "presentation": {
 | 
			
		||||
        "reveal": "never",
 | 
			
		||||
        "panel": "shared"
 | 
			
		||||
      },
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "label": "cleanPublished",
 | 
			
		||||
      "type": "process",
 | 
			
		||||
      "command": "del",
 | 
			
		||||
      "args": [
 | 
			
		||||
        "-rf",
 | 
			
		||||
        "upload/*"
 | 
			
		||||
      ],
 | 
			
		||||
      "group": "build",
 | 
			
		||||
      "presentation": {},
 | 
			
		||||
      "problemMatcher": "$msCompile"
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										204
									
								
								Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,204 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <ImportGroup
 | 
			
		||||
    Condition="Exists($([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))) == 'true'">
 | 
			
		||||
    <Import
 | 
			
		||||
      Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))"/>
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Project">
 | 
			
		||||
    <NuGetAudit>true</NuGetAudit>
 | 
			
		||||
    <!-- Suppresses display of the sign-on banner -->
 | 
			
		||||
    <NoLogo>true</NoLogo>
 | 
			
		||||
    <!-- Prepend organization name to default namespace -->
 | 
			
		||||
    <RootNamespace>Kritikos.$(MSBuildProjectName)</RootNamespace>
 | 
			
		||||
    <!-- Enable global usings based on project type -->
 | 
			
		||||
    <ImplicitUsings>enable</ImplicitUsings>
 | 
			
		||||
    <!-- Generate documentation file and ignore warnings for undocumented elements -->
 | 
			
		||||
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
 | 
			
		||||
    <PublishDocumentationFile>true</PublishDocumentationFile>
 | 
			
		||||
    <NoWarn>$(NoWarn);1591;1701;1702;NU1507</NoWarn>
 | 
			
		||||
    <!-- Error out upon trying to package projects marked as not packable -->
 | 
			
		||||
    <WarnOnPackingNonPackableProject>false</WarnOnPackingNonPackableProject>
 | 
			
		||||
    <!-- Disable warnings on preview SDK versions -->
 | 
			
		||||
    <SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
 | 
			
		||||
    <!-- Enable lock files -->
 | 
			
		||||
    <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
 | 
			
		||||
    <!-- Disable nugets from SDK fallback folders -->
 | 
			
		||||
    <DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
 | 
			
		||||
    <!-- Enable nullable context by default for all projects -->
 | 
			
		||||
    <Nullable>enable</Nullable>
 | 
			
		||||
    <!-- Enable .NET 5+ native analyzers -->
 | 
			
		||||
    <EnableNETAnalyzers>True</EnableNETAnalyzers>
 | 
			
		||||
    <!-- Use latest stable language features -->
 | 
			
		||||
    <AnalysisLevel>preview</AnalysisLevel>
 | 
			
		||||
    <AnalysisMode>All</AnalysisMode>
 | 
			
		||||
    <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
 | 
			
		||||
    <!-- Locked mode should only be enabled on CI -->
 | 
			
		||||
    <RestoreLockedMode Condition="'$(ContinuousIntegrationBuild)' == 'true'">true</RestoreLockedMode>
 | 
			
		||||
    <!-- Use deterministic builds -->
 | 
			
		||||
    <Deterministic Condition="'$(ContinuousIntegrationBuild)' == 'True'">true</Deterministic>
 | 
			
		||||
    <DeterministicSourcePaths Condition="'$(IsTestProject)' == 'true'">false</DeterministicSourcePaths>
 | 
			
		||||
    <!-- Use latest language version supported by the SDK -->
 | 
			
		||||
    <LangVersion>preview</LangVersion>
 | 
			
		||||
    <ClsCompliant>false</ClsCompliant>
 | 
			
		||||
    <!-- Defaults to checked context for math operations, throws OverflowException when needed -->
 | 
			
		||||
    <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
 | 
			
		||||
    <ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
 | 
			
		||||
    <ApplicationVisualStyles>true</ApplicationVisualStyles>
 | 
			
		||||
    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
 | 
			
		||||
    <GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
 | 
			
		||||
    <DefaultItemExcludes>$(DefaultItemExcludes);*.log;*.binlog</DefaultItemExcludes>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Condition="$(ArtifactsPath) == ''">
 | 
			
		||||
    <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Central Package Management">
 | 
			
		||||
    <!-- Create Directory.Packages.props file next to solution to use -->
 | 
			
		||||
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
 | 
			
		||||
    <!-- Any transitive dependency defined below will be used explicitly on the version stated -->
 | 
			
		||||
    <CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Project Assets">
 | 
			
		||||
    <ProjectIcon Condition="Exists('$(MSBuildThisFileDirectory)\icon.png')">
 | 
			
		||||
      $(MSBuildThisFileDirectory)\icon.png
 | 
			
		||||
    </ProjectIcon>
 | 
			
		||||
    <ProjectIcon Condition="Exists('$(MSBuildProjectDirectory)\icon.png')">
 | 
			
		||||
      $(MSBuildProjectDirectory)\icon.png
 | 
			
		||||
    </ProjectIcon>
 | 
			
		||||
    <ProjectIconExists Condition="$(ProjectIcon) != ''">true</ProjectIconExists>
 | 
			
		||||
 | 
			
		||||
    <ProjectReadMe Condition="Exists('$(MSBuildThisFileDirectory)\README.md')">
 | 
			
		||||
      $(MSBuildThisFileDirectory)\README.md
 | 
			
		||||
    </ProjectReadMe>
 | 
			
		||||
    <ProjectReadMe Condition="Exists('$(MSBuildProjectDirectory)\README.md')">
 | 
			
		||||
      $(MSBuildProjectDirectory)\README.md
 | 
			
		||||
    </ProjectReadMe>
 | 
			
		||||
    <ProjectReadMeExists Condition="$(ProjectReadMe) != ''">true</ProjectReadMeExists>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="SDK Functionality"
 | 
			
		||||
                 Condition="'$(UsingMicrosoftNETSdkWeb)' == 'True' OR '$(UsingMicrosoftNETSdkWorker)' == 'True'">
 | 
			
		||||
    <IsPackable>false</IsPackable>
 | 
			
		||||
    <PackAsTool>false</PackAsTool>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Disable Launch Settings for Worker Service"
 | 
			
		||||
                 Condition="'$(UsingMicrosoftNETSdkWorker)' == 'True'">
 | 
			
		||||
    <NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="OpenAPI Analyzers" Condition="'$(UsingMicrosoftNETSdkWeb)' == 'True'">
 | 
			
		||||
    <IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
 | 
			
		||||
    <OpenApiDocumentsDirectory>$(MSBuildProjectDirectory)/OpenApi</OpenApiDocumentsDirectory>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="MAUI Features">
 | 
			
		||||
    <TrimMode>Full</TrimMode>
 | 
			
		||||
    <MauiEnableXamlCBindingWithSourceCompilation>true</MauiEnableXamlCBindingWithSourceCompilation>
 | 
			
		||||
    <MauiStrictXamlCompilation>true</MauiStrictXamlCompilation>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Entity Framework Core - Compiled Model generation">
 | 
			
		||||
    <EFOptimizeContext>true</EFOptimizeContext>
 | 
			
		||||
    <EFScaffoldModelStage>publish</EFScaffoldModelStage>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Sets deterministic source paths for CI builds -->
 | 
			
		||||
  <PropertyGroup Label="CI Build">
 | 
			
		||||
    <!--
 | 
			
		||||
    https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#system-variables -->
 | 
			
		||||
    <ContinuousIntegrationBuild Condition="'$(TF_BUILD)' == 'true'">true</ContinuousIntegrationBuild>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
    https://help.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables -->
 | 
			
		||||
    <ContinuousIntegrationBuild Condition="'$(GITHUB_ACTIONS)' == 'true'">true</ContinuousIntegrationBuild>
 | 
			
		||||
 | 
			
		||||
    <!-- https://docs.gitlab.com/ee/ci/variables/predefined_variables.html -->
 | 
			
		||||
    <ContinuousIntegrationBuild Condition="'$(GITLAB_CI)' == 'true'">true</ContinuousIntegrationBuild>
 | 
			
		||||
 | 
			
		||||
    <!-- https://www.appveyor.com/docs/environment-variables/ -->
 | 
			
		||||
    <ContinuousIntegrationBuild Condition="'$(APPVEYOR)' == 'True'">true</ContinuousIntegrationBuild>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Mark assemblies as CLS compliant so the compiler warns on non compliant usage -->
 | 
			
		||||
  <PropertyGroup Condition="$(IsPackable) == 'true'">
 | 
			
		||||
    <ClsCompliant>true</ClsCompliant>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AssemblyAttribute Include="System.CLSCompliant">
 | 
			
		||||
      <_Parameter1>$(ClsCompliant)</_Parameter1>
 | 
			
		||||
      <_Parameter1_TypeName>System.Boolean</_Parameter1_TypeName>
 | 
			
		||||
    </AssemblyAttribute>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Use readme as nuget information -->
 | 
			
		||||
  <ItemGroup Label="Readme" Condition="$(IsPackable) == 'True' AND $(ProjectReadMe) != ''">
 | 
			
		||||
    <None Include="$(ProjectReadMe)" Pack="true" PackagePath="" Visible="true"/>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Use nuget icon -->
 | 
			
		||||
  <ItemGroup Label="Icon" Condition="$(IsPackable) == 'True' AND $(ProjectIconExists) == 'True'">
 | 
			
		||||
    <None Include="$(ProjectIcon)" Pack="true" PackagePath="icon.png" Visible="false"/>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Uses pretty xUnit configuration -->
 | 
			
		||||
  <ItemGroup Label="xUnit Configuration"
 | 
			
		||||
             Condition="Exists('$(MSBuildThisFileDirectory)\xunit.runner.json') AND $(IsTestProject)=='True'">
 | 
			
		||||
    <Content Include="$(MSBuildThisFileDirectory)\xunit.runner.json" Link="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" Visible="false" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <!-- Project internals are exposed to projects named $(Project).Tests by default -->
 | 
			
		||||
  <ItemGroup
 | 
			
		||||
    Condition="@(InternalsVisibleToSuffix->Count()) == 0 AND @(InternalsVisibleTo->Count()) == 0">
 | 
			
		||||
    <InternalsVisibleToSuffix Include=".Tests"/>
 | 
			
		||||
    <InternalsVisibleToSuffix Include="Tests"/>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Package">
 | 
			
		||||
    <PackageId>$(RootNamespace)</PackageId>
 | 
			
		||||
    <Company>Kritikos IO</Company>
 | 
			
		||||
    <Authors>Alexandros Kritikos</Authors>
 | 
			
		||||
    <CurrentYear>$([System.DateTime]::Now.ToString(yyyy))</CurrentYear>
 | 
			
		||||
    <Copyright>Copyright © 2017-$(CurrentYear) Kritikos IO. All rights reserved.</Copyright>
 | 
			
		||||
    <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
 | 
			
		||||
    <PackageOutputPath>$(MSBuildThisFileDirectory)/packages</PackageOutputPath>
 | 
			
		||||
    <PublishDir>$(MSBuildThisFileDirectory)/upload/$(ProjectName)</PublishDir>
 | 
			
		||||
    <PackageIcon Condition="$(ProjectIconExists) == 'True'">icon.png</PackageIcon>
 | 
			
		||||
    <PackageReadmeFile Condition="$(ProjectReadMeExists) == 'True'">README.md</PackageReadmeFile>
 | 
			
		||||
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
 | 
			
		||||
    <RepositoryType>git</RepositoryType>
 | 
			
		||||
    <!-- Optional: Embed source files that are not tracked by the source control manager to the PDB -->
 | 
			
		||||
    <!-- This is useful if you generate files during the build -->
 | 
			
		||||
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
 | 
			
		||||
    <!-- Optional: Build symbol package (.snupkg) to distribute the PDB containing Source Link -->
 | 
			
		||||
    <IncludeSymbols>true</IncludeSymbols>
 | 
			
		||||
    <EnablePackageValidation>true</EnablePackageValidation>
 | 
			
		||||
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>
 | 
			
		||||
    <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
 | 
			
		||||
    <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup Label="Versioning" Condition="'$(IsTestProject)' != 'true'">
 | 
			
		||||
    <PackageReference Include="GitVersion.MsBuild"
 | 
			
		||||
                      Condition="Exists('$(MSBuildThisFileDirectory)\.git')">
 | 
			
		||||
      <PrivateAssets>all</PrivateAssets>
 | 
			
		||||
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 | 
			
		||||
    </PackageReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup Label="Test Frameworks" Condition="'$(IsTestProject)' == 'true'">
 | 
			
		||||
    <PackageReference Include="NSubstitute"/>
 | 
			
		||||
    <PackageReference Include="NSubstitute.Analyzers.CSharp">
 | 
			
		||||
      <PrivateAssets>all</PrivateAssets>
 | 
			
		||||
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 | 
			
		||||
    </PackageReference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup Label="SourceLink" Condition="$(IsPackable) == 'true'">
 | 
			
		||||
    <SourceLinkGiteaHost Include="git.kritikos.io"/>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										68
									
								
								Directory.Build.targets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								Directory.Build.targets
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <Target Name="RestoreNpmAssets">
 | 
			
		||||
    <Exec Command="npm install" />
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Test Functionality" Condition="$(IsTestProject) == 'true'">
 | 
			
		||||
    <IsPackable>false</IsPackable>
 | 
			
		||||
    <PackAsTool>false</PackAsTool>
 | 
			
		||||
    <NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
 | 
			
		||||
    <UseMicrosoftTestingPlatformRunner>true</UseMicrosoftTestingPlatformRunner>
 | 
			
		||||
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
 | 
			
		||||
    <RunSettingsFilePath>$(MSBuildThisFileDirectory)\.runsettings</RunSettingsFilePath>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup Label="Hide Assets">
 | 
			
		||||
    <None Update="icon.png" Visible="false" />
 | 
			
		||||
    <None Update="..\..\README.md" Visible="false" />
 | 
			
		||||
    <None Update="packages.lock.json" Visible="false" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <Target Name="AddInternalsVisibleTo" BeforeTargets="BeforeCompile">
 | 
			
		||||
    <!--
 | 
			
		||||
      Add an ItemGroup with tags in the following format:
 | 
			
		||||
      <InternalsVisibleTo Include="CustomTest1" />
 | 
			
		||||
        -> [assembly: InternalsVisibleTo("CustomTest1")]
 | 
			
		||||
      <InternalsVisibleTo Include="CustomTest2, PublicKey=abc" />
 | 
			
		||||
        -> [assembly: InternalsVisibleTo("CustomTest2, PublicKey=abc")]
 | 
			
		||||
      <InternalsVisibleTo Include="$(AssemblyName).Custom" />
 | 
			
		||||
        -> [assembly: InternalsVisibleTo("ClassLibrary1.Custom")]
 | 
			
		||||
 | 
			
		||||
      on a project with assembly name ClasLibrary1:
 | 
			
		||||
      <InternalsVisibleToSuffix Include=".Tests" />
 | 
			
		||||
        -> [assembly: InternalsVisibleTo("ClassLibrary1.Tests")]
 | 
			
		||||
      <InternalsVisibleToSuffix Include=".FunctionalTests" />
 | 
			
		||||
        -> [assembly: InternalsVisibleTo("ClassLibrary1.FunctionalTests")]
 | 
			
		||||
     -->
 | 
			
		||||
 | 
			
		||||
    <!-- Add default suffix for tests -->
 | 
			
		||||
    <ItemGroup>
 | 
			
		||||
      <InternalsVisibleToSuffix Include=".Tests" />
 | 
			
		||||
    </ItemGroup>
 | 
			
		||||
 | 
			
		||||
    <!-- Handle InternalsVisibleTo -->
 | 
			
		||||
    <ItemGroup Condition="'@(InternalsVisibleTo->Count())' > 0">
 | 
			
		||||
      <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo">
 | 
			
		||||
        <_Parameter1>%(InternalsVisibleTo.Identity)</_Parameter1>
 | 
			
		||||
      </AssemblyAttribute>
 | 
			
		||||
    </ItemGroup>
 | 
			
		||||
 | 
			
		||||
    <!-- Handle InternalsVisibleToSuffix -->
 | 
			
		||||
    <ItemGroup Condition="@(InternalsVisibleToSuffix->Count()) > 0">
 | 
			
		||||
      <AssemblyAttribute Include="System.Runtime.CompilerServices.InternalsVisibleTo"
 | 
			
		||||
        Condition="$(AssemblyName.EndsWith(%(InternalsVisibleToSuffix.Identity))) == 'false'">
 | 
			
		||||
        <_Parameter1>$(AssemblyName)%(InternalsVisibleToSuffix.Identity)</_Parameter1>
 | 
			
		||||
      </AssemblyAttribute>
 | 
			
		||||
    </ItemGroup>
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <Target Name="CreateReleaseNotesFromFile" BeforeTargets="GenerateNuspec"
 | 
			
		||||
    Condition="Exists('$(MSBuildThisFileDirectory)changes.log')">
 | 
			
		||||
    <ReadLinesFromFile File="$(MSBuildThisFileDirectory)changes.log">
 | 
			
		||||
      <Output TaskParameter="Lines" ItemName="ReleaseNoteLines" />
 | 
			
		||||
    </ReadLinesFromFile>
 | 
			
		||||
    <PropertyGroup>
 | 
			
		||||
      <PackageReleaseNotes>@(ReleaseNoteLines, '%0a')</PackageReleaseNotes>
 | 
			
		||||
    </PropertyGroup>
 | 
			
		||||
  </Target>
 | 
			
		||||
</Project>
 | 
			
		||||
@@ -1,25 +1,11 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <ImportGroup
 | 
			
		||||
    Condition="Exists($([MSBuild]::GetPathOfFileAbove('Directory.Packages.props', '$(MSBuildThisFileDirectory)../'))) == 'true'">
 | 
			
		||||
    <Import
 | 
			
		||||
      Project="$([MSBuild]::GetPathOfFileAbove('Directory.Packages.props', '$(MSBuildThisFileDirectory)../'))" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
  <ItemGroup Label="Common Packages">
 | 
			
		||||
    <PackageVersion Include="coverlet.collector" Version="6.0.2" />
 | 
			
		||||
    <PackageVersion Include="FluentAssertions" Version="7.0.0" />
 | 
			
		||||
    <PackageVersion Include="FluentAssertions.Analyzers" Version="0.34.0" />
 | 
			
		||||
    <PackageVersion Include="GitVersion.MSBuild" Version="6.0.5" />
 | 
			
		||||
    <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
 | 
			
		||||
    <PackageVersion Include="NSubstitute" Version="5.3.0" />
 | 
			
		||||
  <ItemGroup Label="Packages">
 | 
			
		||||
    <PackageVersion Include="GitVersion.MsBuild" Version="6.3.0" />
 | 
			
		||||
    <PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.6" />
 | 
			
		||||
    <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
 | 
			
		||||
    <PackageVersion Include="NSubstitute.Analyzers.CSharp" Version="1.0.17" />
 | 
			
		||||
    <PackageVersion Include="SerilogAnalyzer" Version="0.15.0" />
 | 
			
		||||
    <PackageVersion Include="SmartAnalyzers.ExceptionAnalyzer" Version="1.0.10" />
 | 
			
		||||
    <PackageVersion Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" />
 | 
			
		||||
    <PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
 | 
			
		||||
    <PackageVersion Include="xunit" Version="2.9.2" />
 | 
			
		||||
    <PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2">
 | 
			
		||||
      <PrivateAssets>all</PrivateAssets>
 | 
			
		||||
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
 | 
			
		||||
    </PackageVersion>
 | 
			
		||||
    <PackageVersion Include="NSubstitute" Version="5.3.0" />
 | 
			
		||||
    <PackageVersion Include="xunit.v3" Version="2.0.2" />
 | 
			
		||||
    <PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										53
									
								
								Directory.Solution.targets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Directory.Solution.targets
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <Target Name="GetGitBranch" BeforeTargets="ValidateSolutionConfiguration"
 | 
			
		||||
    Condition="!Exists('$(SolutionDir)changes.log')">
 | 
			
		||||
    <Exec ConsoleToMSBuild="True" IgnoreExitCode="true" Command="git rev-parse --abbrev-ref HEAD"
 | 
			
		||||
      StandardOutputImportance="low" StandardErrorImportance="low" ContinueOnError="WarnAndContinue">
 | 
			
		||||
      <Output TaskParameter="ConsoleOutput" PropertyName="GitBranch" />
 | 
			
		||||
      <Output TaskParameter="ExitCode" PropertyName="GitBranchExitCode" />
 | 
			
		||||
    </Exec>
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <Target Name="GetGitTag" AfterTargets="GetGitBranch"
 | 
			
		||||
    Condition="$(GitBranch) != '' AND !Exists('$(SolutionDir)changes.log')">
 | 
			
		||||
    <Exec ConsoleToMSBuild="True" IgnoreExitCode="true"
 | 
			
		||||
      Condition="$(GitBranch) == 'master' OR $(GitBranch) == 'main'"
 | 
			
		||||
      Command='git describe --tags --abbrev=0 --exclude "v*-*"' StandardOutputImportance="low"
 | 
			
		||||
      StandardErrorImportance="low" ContinueOnError="WarnAndContinue">
 | 
			
		||||
      <Output TaskParameter="ConsoleOutput" PropertyName="GitTag" />
 | 
			
		||||
      <Output TaskParameter="ConsoleOutput" PropertyName="GitVerTag" />
 | 
			
		||||
      <Output TaskParameter="ExitCode" PropertyName="GitTagExitCode" />
 | 
			
		||||
    </Exec>
 | 
			
		||||
    <Exec ConsoleToMSBuild="True" IgnoreExitCode="true"
 | 
			
		||||
      Condition="$(GitBranch) != 'master' AND $(GitBranch) != 'main'"
 | 
			
		||||
      Command="git describe --tags --abbrev=0" StandardOutputImportance="low"
 | 
			
		||||
      StandardErrorImportance="low" ContinueOnError="WarnAndContinue">
 | 
			
		||||
      <Output TaskParameter="ConsoleOutput" PropertyName="GitTag" />
 | 
			
		||||
      <Output TaskParameter="ExitCode" PropertyName="GitTagExitCode" />
 | 
			
		||||
    </Exec>
 | 
			
		||||
  </Target>
 | 
			
		||||
 | 
			
		||||
  <Target Name="CreateGitLog" AfterTargets="GetGitTag"
 | 
			
		||||
    Condition="!Exists('$(MSBuildThisFileDirectory)\changes.log')">
 | 
			
		||||
    <PropertyGroup>
 | 
			
		||||
      <GitBaseCommand>git log --no-merges</GitBaseCommand>
 | 
			
		||||
      <GitCommand Condition="$([MSBuild]::IsOSPlatform('Windows')) == 'true'">$(GitBaseCommand)
 | 
			
		||||
        --pretty=format:"- %25%25s"</GitCommand>
 | 
			
		||||
      <GitCommand Condition="$([MSBuild]::IsOSPlatform('Windows')) != 'true'">$(GitBaseCommand)
 | 
			
		||||
        --pretty=format:"- %25s"</GitCommand>
 | 
			
		||||
    </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
    <Exec Condition="$(GitTagExitCode) == 0"
 | 
			
		||||
      Command='$(GitCommand) $(GitTag)..HEAD > "$(MSBuildThisFileDirectory)changes.log"'
 | 
			
		||||
      StandardOutputImportance="low" StandardErrorImportance="low" ContinueOnError="WarnAndContinue" />
 | 
			
		||||
    <Exec Condition="$(GitTagExitCode) != 0"
 | 
			
		||||
      Command="$(GitCommand) > "$(MSBuildThisFileDirectory)changes.log""
 | 
			
		||||
      StandardOutputImportance="low" StandardErrorImportance="low" ContinueOnError="WarnAndContinue" />
 | 
			
		||||
    <Exec Condition="$([MSBuild]::IsOSPlatform('Windows')) == 'true'"
 | 
			
		||||
      Command="type $(MSBuildThisFileDirectory)changes.log | findstr -v 💚 | findstr -v : | findstr -v 🔧 > $(MSBuildThisFileDirectory)changes.log"
 | 
			
		||||
      StandardOutputImportance="low" StandardErrorImportance="low" ContinueOnError="WarnAndContinue" />
 | 
			
		||||
    <Exec Condition="$([MSBuild]::IsOSPlatform('Windows')) != 'true'"
 | 
			
		||||
      Command="sed -i '/^- 💚/ d' $(MSBuildThisFileDirectory)changes.log && sed -i '/^- 🔧/ d' $(MSBuildThisFileDirectory)changes.log && sed -i '/:/d' $(MSBuildThisFileDirectory)changes.log"
 | 
			
		||||
      StandardOutputImportance="low" StandardErrorImportance="low" ContinueOnError="WarnAndContinue" />
 | 
			
		||||
  </Target>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										32
									
								
								GitVersion.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								GitVersion.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
workflow: GitFlow/v1
 | 
			
		||||
mode: ContinuousDelivery
 | 
			
		||||
branches:
 | 
			
		||||
  main:
 | 
			
		||||
    mode: ContinuousDelivery
 | 
			
		||||
    label: rc
 | 
			
		||||
  develop:
 | 
			
		||||
    label: alpha
 | 
			
		||||
    source-branches:
 | 
			
		||||
      - main
 | 
			
		||||
      - feature
 | 
			
		||||
  feature:
 | 
			
		||||
    mode: ContinuousDelivery
 | 
			
		||||
    label: '{BranchName}'
 | 
			
		||||
    source-branches:
 | 
			
		||||
      - develop
 | 
			
		||||
  release:
 | 
			
		||||
    mode: ContinuousDelivery
 | 
			
		||||
    label: ''
 | 
			
		||||
    source-branches:
 | 
			
		||||
      - main
 | 
			
		||||
      - hotfix
 | 
			
		||||
  hotfix:
 | 
			
		||||
    mode: ContinuousDelivery
 | 
			
		||||
    label: '{BranchName}'
 | 
			
		||||
    source-branches:
 | 
			
		||||
      - release
 | 
			
		||||
 | 
			
		||||
prevent-increment:
 | 
			
		||||
  of-merged-branch: true
 | 
			
		||||
  when-branch-merged: true
 | 
			
		||||
  when-current-commit-tagged: true
 | 
			
		||||
							
								
								
									
										17
									
								
								Solution.code-workspace
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Solution.code-workspace
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
{
 | 
			
		||||
  "folders": [
 | 
			
		||||
    {
 | 
			
		||||
      "path": ".",
 | 
			
		||||
      "name": "Source"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "extensions": {
 | 
			
		||||
    "recommendations": [
 | 
			
		||||
      "EditorConfig.EditorConfig",
 | 
			
		||||
      "mhutchie.git-graph",
 | 
			
		||||
      "ms-dotnettools.csdevkit",
 | 
			
		||||
      "ms-vscode-remote.remote-containers",
 | 
			
		||||
      "seatonjiang.gitmoji-vscode",
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										115
									
								
								Solution.sln.DotSettings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								Solution.sln.DotSettings
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/GenerateMemberBody/DebuggerStepThroughAccessors/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:String x:Key="/Default/CodeEditing/GenerateMemberBody/DocumentationGenerationKind/@EntryValue">Inherit</s:String>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/GenerateMemberBody/PlaceBackingFieldAboveProperty/@EntryValue">True</s:Boolean>
 | 
			
		||||
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/AutoCompleteBasicCompletion/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/Intellisense/CSharpAdvancedCodeCompletion/InsertLambdaAsTemplate/@EntryValue">False</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/Intellisense/EnhancedTooltipSettingsRoot/IdentifierTooltip/ShowArgumentsRole/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/Intellisense/LookupWindow/ShowSignatures/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/Intellisense/ParameterInfo/DelegatesAsLambdas/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/TypingAssist/Asp/FormatOnClosingTag/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/TypingAssist/Asp/FormatOnEnter/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/TypingAssist/CSharpAnnotationTypingAssist/IsEnabledAfterTypeName/@EntryValue">False</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/TypingAssist/CSharpAnnotationTypingAssist/IsEnabledAtOtherPositions/@EntryValue">False</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeEditing/TypingAssist/CSharpAnnotationTypingAssist/IsInsertNullCheckWhenAlreadyAnnotated/@EntryValue">False</s:Boolean>
 | 
			
		||||
 | 
			
		||||
  <s:Int64 x:Key="/Default/CodeInspection/CognitiveComplexityAnalysis/CSharpThreshold/@EntryValue">20</s:Int64>
 | 
			
		||||
  <s:String x:Key="/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=_002AModelSnapshot_002Ecs/@EntryIndexedValue">*ModelSnapshot.cs</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=Migrations_002F_002A/@EntryIndexedValue">Migrations/*</s:String>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeInspection/Highlighting/CalculateInheritedTypeMembers/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeInspection/Highlighting/DoNotShowVsBulb/@EntryValue">False</s:Boolean>
 | 
			
		||||
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ClassNeverInstantiated_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 | 
			
		||||
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ClassNeverInstantiated_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 | 
			
		||||
	<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertToPrimaryConstructor/@EntryIndexedValue">DO_NOT_SHOW</s:String>
 | 
			
		||||
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeInspection/Highlighting/MergeVsBulbItemsIntoReSharperBulb/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeInspection/Highlighting/ReadSettingsFromFileLevel/@EntryValue">True</s:Boolean>
 | 
			
		||||
	<s:Boolean x:Key="/Default/CodeInspection/Highlighting/RunLongAnalysisInSwa/@EntryValue">True</s:Boolean>
 | 
			
		||||
	<s:String x:Key="/Default/CodeInspection/Highlighting/SweaWarningsMode/@EntryValue">ShowAndRun</s:String>
 | 
			
		||||
	<s:String x:Key="/Default/CodeInspection/XmlDocInspections/TypeAccessibility/@EntryValue">None</s:String>
 | 
			
		||||
	<s:String x:Key="/Default/CodeInspection/XmlDocInspections/TypeMemberAccessibility/@EntryValue">None</s:String>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CommonFormatter/AUTODETECT_INDENT_SETTINGS/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ALIGNMENT_TAB_FILL_STYLE/@EntryValue">USE_TABS_ONLY</s:String>
 | 
			
		||||
  <s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/BLANK_LINES_AROUND_REGION/@EntryValue">0</s:Int64>
 | 
			
		||||
  <s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/BLANK_LINES_BEFORE_SINGLE_LINE_COMMENT/@EntryValue">1</s:Int64>
 | 
			
		||||
  <s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/BLANK_LINES_BETWEEN_USING_GROUPS/@EntryValue">1</s:Int64>
 | 
			
		||||
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSORHOLDER_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_WHILE_ON_NEW_LINE/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_AFTER_TYPECAST_PARENTHESES/@EntryValue">False</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_WITHIN_SINGLE_LINE_ARRAY_INITIALIZER_BRACES/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_BEFORE_BINARY_OPSIGN/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_CHAINED_METHOD_CALLS/@EntryValue">CHOP_IF_LONG</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LINQ_EXPRESSIONS/@EntryValue">CHOP_ALWAYS</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_TERNARY_EXPR_STYLE/@EntryValue">CHOP_ALWAYS</s:String>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/CSharpUsing/QualifiedUsingAtNestedScope/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/EditorConfig/EnableStyleCopSupport/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/CodeStyle/EditorConfig/ShowEditorConfigStatusBarIndicator/@EntryValue">True</s:Boolean>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FBLOCK_005FSCOPE_005FCONSTANT/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FBLOCK_005FSCOPE_005FFUNCTION/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FBLOCK_005FSCOPE_005FVARIABLE/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FCLASS/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FCONSTRUCTOR/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FFUNCTION/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FGLOBAL_005FVARIABLE/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FLABEL/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FLOCAL_005FCONSTRUCTOR/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FLOCAL_005FVARIABLE/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FOBJECT_005FPROPERTY_005FOF_005FFUNCTION/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=JS_005FPARAMETER/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FCLASS/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FENUM/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FENUM_005FMEMBER/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FINTERFACE/@EntryIndexedValue"><Policy Inspect="True" Prefix="I" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FMIXED_005FENUM/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FMODULE/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FMODULE_005FEXPORTED/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FMODULE_005FLOCAL/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPRIVATE_005FMEMBER_005FACCESSOR/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPRIVATE_005FSTATIC_005FTYPE_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPRIVATE_005FTYPE_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPRIVATE_005FTYPE_005FMETHOD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPROTECTED_005FMEMBER_005FACCESSOR/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPROTECTED_005FSTATIC_005FTYPE_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPROTECTED_005FTYPE_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPROTECTED_005FTYPE_005FMETHOD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPUBLIC_005FMEMBER_005FACCESSOR/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPUBLIC_005FSTATIC_005FTYPE_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPUBLIC_005FTYPE_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FPUBLIC_005FTYPE_005FMETHOD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FTYPE_005FALIAS/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FTYPE_005FPARAMETER/@EntryIndexedValue"><Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/WebNaming/UserRules/=ASP_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/WebNaming/UserRules/=ASP_005FHTML_005FCONTROL/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/WebNaming/UserRules/=ASP_005FTAG_005FNAME/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/WebNaming/UserRules/=ASP_005FTAG_005FPREFIX/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=NAMESPACE_005FALIAS/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=XAML_005FFIELD/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
  <s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=XAML_005FRESOURCE/@EntryIndexedValue"><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /></s:String>
 | 
			
		||||
	<s:String x:Key="/Default/CustomTools/CustomToolsData/@EntryValue"></s:String>
 | 
			
		||||
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=AutoRecoverer/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=Format/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=Roslyn_002Dswea/@EntryIndexedValue">DO_NOTHING</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=ShowAnnotations/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=SolExp_002DTrack/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=StartPage_002DIsDownloadRefreshEnabled/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=StartPage_002DOnEnvironmentStatup/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=SyncSettings/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=TextEditor_002DCodeLens/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=TextEditor_002DTrackChanges_002D2/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=VCS/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=VsBulb/@EntryIndexedValue">DO_NOTHING</s:String>
 | 
			
		||||
  <s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=XAML_0020Designer/@EntryIndexedValue">LIVE_MONITOR</s:String>
 | 
			
		||||
  <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
 | 
			
		||||
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
 | 
			
		||||
  <s:Boolean x:Key="/Default/ReSpeller/ReSpellerEnabled/@EntryValue">False</s:Boolean>
 | 
			
		||||
</wpf:ResourceDictionary>
 | 
			
		||||
@@ -14,7 +14,6 @@
 | 
			
		||||
    <File Path="Directory.Packages.props" />
 | 
			
		||||
    <File Path="dotnet.ruleset" />
 | 
			
		||||
    <File Path="GitVersion.yml" />
 | 
			
		||||
    <File Path="stylecop.json" />
 | 
			
		||||
    <File Path="xunit.runner.json" />
 | 
			
		||||
  </Folder>
 | 
			
		||||
  <Folder Name="/samples/">
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
../.config/.gitkeep
 | 
			
		||||
							
								
								
									
										0
									
								
								packages/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								packages/.gitkeep
									
									
									
									
									
										Normal file
									
								
							@@ -1 +0,0 @@
 | 
			
		||||
../.config/Extras.Directory.Build.props
 | 
			
		||||
							
								
								
									
										17
									
								
								samples/Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								samples/Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <ImportGroup
 | 
			
		||||
    Condition="Exists($([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))) == 'true'">
 | 
			
		||||
    <Import
 | 
			
		||||
      Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <IsPackable>false</IsPackable>
 | 
			
		||||
    <PackAsTool>false</PackAsTool>
 | 
			
		||||
    <IsPublishable>false</IsPublishable>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AssemblyAttribute Include="System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <ImportGroup Condition="Exists($([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))) == 'true'">
 | 
			
		||||
    <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
 | 
			
		||||
  <ImportGroup
 | 
			
		||||
    Condition="Exists($([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))) == 'true'">
 | 
			
		||||
    <Import
 | 
			
		||||
      Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Label="Package">
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
../.config/Tests.Directory.Build.props
 | 
			
		||||
							
								
								
									
										28
									
								
								tests/Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tests/Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
<Project>
 | 
			
		||||
  <ImportGroup
 | 
			
		||||
    Condition="Exists($([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))) == 'true'">
 | 
			
		||||
    <Import
 | 
			
		||||
      Project="$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'))" />
 | 
			
		||||
  </ImportGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <IsPublishable>false</IsPublishable>
 | 
			
		||||
    <IsTestProject>true</IsTestProject>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AssemblyAttribute Include="System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup Label="Loggers">
 | 
			
		||||
    <VSTestLogger
 | 
			
		||||
      Include="trx%3BLogFileName=TestResults-$(TargetFramework)-$(MSBuildProjectName).trx" />
 | 
			
		||||
    <VSTestLogger
 | 
			
		||||
      Include="html%3BLogFileName=TestResults-$(TargetFramework)-$(MSBuildProjectName).html" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup Condition="$(ContinuousIntegrationBuild) == 'true'">
 | 
			
		||||
    <VSTestLogger>@(VSTestLogger)</VSTestLogger>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
../.config/.gitkeep
 | 
			
		||||
							
								
								
									
										0
									
								
								upload/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								upload/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										9
									
								
								xunit.runner.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								xunit.runner.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
{
 | 
			
		||||
  "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
 | 
			
		||||
  "methodDisplay": "classAndMethod",
 | 
			
		||||
  "methodDisplayOptions": "all",
 | 
			
		||||
  "parallelAlgorithm": "aggressive",
 | 
			
		||||
  "parallelizeAssembly": true,
 | 
			
		||||
  "longRunningTestSeconds": 5,
 | 
			
		||||
  "showLiveOutput": true
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user