From 419780df442a100fa4fe224ceabec953d8e40301 Mon Sep 17 00:00:00 2001 From: Alexandros Kritikos Date: Mon, 16 Jun 2025 22:35:21 +0300 Subject: [PATCH] Replaces configuration files and update project structure --- .editorconfig | 2 +- .globalconfig | 157 ++++++++++++++++++++++++++ .runsettings | 28 +++++ .vscode/settings.json | 1 - .vscode/tasks.json | 191 ++++++++++++++++++++++++++++++- Directory.Build.props | 204 ++++++++++++++++++++++++++++++++++ Directory.Build.targets | 68 ++++++++++++ Directory.Packages.props | 28 ++--- Directory.Solution.targets | 53 +++++++++ GitVersion.yml | 32 ++++++ Solution.code-workspace | 17 +++ Solution.sln.DotSettings | 115 +++++++++++++++++++ Solution.slnx | 1 - icon.png | Bin 0 -> 9176 bytes packages/.gitkeep | 1 - samples/Directory.Build.props | 18 ++- src/Directory.Build.props | 6 +- tests/Directory.Build.props | 29 ++++- upload/.gitkeep | 1 - xunit.runner.json | 9 ++ 20 files changed, 930 insertions(+), 31 deletions(-) create mode 100644 .globalconfig create mode 100644 .runsettings delete mode 120000 .vscode/settings.json mode change 120000 => 100644 .vscode/tasks.json create mode 100644 Directory.Build.props create mode 100644 Directory.Build.targets create mode 100644 Directory.Solution.targets create mode 100644 GitVersion.yml create mode 100644 Solution.code-workspace create mode 100644 Solution.sln.DotSettings create mode 100644 icon.png mode change 120000 => 100644 packages/.gitkeep mode change 120000 => 100644 samples/Directory.Build.props mode change 120000 => 100644 tests/Directory.Build.props mode change 120000 => 100644 upload/.gitkeep create mode 100644 xunit.runner.json diff --git a/.editorconfig b/.editorconfig index 245cf42..2dd4c77 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,5 +10,5 @@ trim_trailing_whitespace = true [*.sh] end_of_line = lf -[**/Migrations/*.cs] +[{*.Generated.*.cs,Migrations/*,Scripts/*}] generated_code = true diff --git a/.globalconfig b/.globalconfig new file mode 100644 index 0000000..9faf33b --- /dev/null +++ b/.globalconfig @@ -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 = _ diff --git a/.runsettings b/.runsettings new file mode 100644 index 0000000..a3c9930 --- /dev/null +++ b/.runsettings @@ -0,0 +1,28 @@ + + + + .\TestResults + true + + + invariant + 5 + + + + + + cobertura + coverage.xml + ObsoleteAttribute,GeneratedCodeAttribute,CompilerGeneratedAttribute + **/tests/**.cs,**/samples/**.cs + false + true + false + true + true + + + + + diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 120000 index 1e08111..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1 +0,0 @@ -../.config/.vscode/settings.json \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 120000 index a46957e..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1 +0,0 @@ -../.config/.vscode/tasks-dotnet.json \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..d99b4df --- /dev/null +++ b/.vscode/tasks.json @@ -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" + } + ] +} diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..593a71e --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,204 @@ + + + + + + + true + + true + + Kritikos.$(MSBuildProjectName) + + enable + + true + true + $(NoWarn);1591;1701;1702;NU1507 + + false + + true + + true + + true + + enable + + True + + preview + All + true + + true + + true + false + + preview + false + + true + PerMonitorV2 + true + true + False + $(DefaultItemExcludes);*.log;*.binlog + + + + $(MSBuildThisFileDirectory)artifacts + + + + + true + + true + + + + + $(MSBuildThisFileDirectory)\icon.png + + + $(MSBuildProjectDirectory)\icon.png + + true + + + $(MSBuildThisFileDirectory)\README.md + + + $(MSBuildProjectDirectory)\README.md + + true + + + + false + false + + + + true + + + + true + $(MSBuildProjectDirectory)/OpenApi + + + + Full + true + true + + + + true + publish + + + + + + true + + + true + + + true + + + true + + + + + true + + + + <_Parameter1>$(ClsCompliant) + <_Parameter1_TypeName>System.Boolean + + + + + + + + + + + + + + + + + + + + + + + + + + $(RootNamespace) + Kritikos IO + Alexandros Kritikos + $([System.DateTime]::Now.ToString(yyyy)) + Copyright © 2017-$(CurrentYear) Kritikos IO. All rights reserved. + false + $(MSBuildThisFileDirectory)/packages + $(MSBuildThisFileDirectory)/upload/$(ProjectName) + icon.png + README.md + true + git + + + true + + true + true + snupkg + Apache-2.0 + true + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000..1d85767 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,68 @@ + + + + + + + false + false + true + true + true + $(MSBuildThisFileDirectory)\.runsettings + + + + + + + + + + + + + + + + + + + + <_Parameter1>%(InternalsVisibleTo.Identity) + + + + + + + <_Parameter1>$(AssemblyName)%(InternalsVisibleToSuffix.Identity) + + + + + + + + + + @(ReleaseNoteLines, '%0a') + + + diff --git a/Directory.Packages.props b/Directory.Packages.props index 6d82169..2a09ac7 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,25 +1,11 @@ - - - - - - - - - - + + + + - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + + diff --git a/Directory.Solution.targets b/Directory.Solution.targets new file mode 100644 index 0000000..ce73dec --- /dev/null +++ b/Directory.Solution.targets @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + git log --no-merges + $(GitBaseCommand) + --pretty=format:"- %25%25s" + $(GitBaseCommand) + --pretty=format:"- %25s" + + + + + + + + diff --git a/GitVersion.yml b/GitVersion.yml new file mode 100644 index 0000000..9ce984f --- /dev/null +++ b/GitVersion.yml @@ -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 diff --git a/Solution.code-workspace b/Solution.code-workspace new file mode 100644 index 0000000..53ee6f4 --- /dev/null +++ b/Solution.code-workspace @@ -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", + ] + } +} diff --git a/Solution.sln.DotSettings b/Solution.sln.DotSettings new file mode 100644 index 0000000..7fb19a2 --- /dev/null +++ b/Solution.sln.DotSettings @@ -0,0 +1,115 @@ + + True + Inherit + True + + True + False + True + True + True + True + True + False + False + False + + 20 + *ModelSnapshot.cs + Migrations/* + True + False + DO_NOT_SHOW + DO_NOT_SHOW + DO_NOT_SHOW + + True + True + True + ShowAndRun + None + None + True + USE_TABS_ONLY + 0 + 1 + 1 + + NEVER + NEVER + NEVER + True + False + True + True + CHOP_IF_LONG + CHOP_ALWAYS + CHOP_ALWAYS + True + True + True + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="I" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="T" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + + + LIVE_MONITOR + LIVE_MONITOR + DO_NOTHING + LIVE_MONITOR + LIVE_MONITOR + LIVE_MONITOR + LIVE_MONITOR + LIVE_MONITOR + LIVE_MONITOR + LIVE_MONITOR + LIVE_MONITOR + DO_NOTHING + LIVE_MONITOR + True + True + True + True + True + False + diff --git a/Solution.slnx b/Solution.slnx index 394921a..15a1632 100644 --- a/Solution.slnx +++ b/Solution.slnx @@ -14,7 +14,6 @@ - diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..94f635a34ea44555ed3c1dd616fdb1e9ff2845c9 GIT binary patch literal 9176 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 literal 0 HcmV?d00001 diff --git a/packages/.gitkeep b/packages/.gitkeep deleted file mode 120000 index 98ae275..0000000 --- a/packages/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -../.config/.gitkeep \ No newline at end of file diff --git a/packages/.gitkeep b/packages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/samples/Directory.Build.props b/samples/Directory.Build.props deleted file mode 120000 index dac8906..0000000 --- a/samples/Directory.Build.props +++ /dev/null @@ -1 +0,0 @@ -../.config/Extras.Directory.Build.props \ No newline at end of file diff --git a/samples/Directory.Build.props b/samples/Directory.Build.props new file mode 100644 index 0000000..5926a6e --- /dev/null +++ b/samples/Directory.Build.props @@ -0,0 +1,17 @@ + + + + + + + false + false + false + + + + + + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 08b5757..f23084e 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,8 @@ - - + + diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props deleted file mode 120000 index 92b9d7a..0000000 --- a/tests/Directory.Build.props +++ /dev/null @@ -1 +0,0 @@ -../.config/Tests.Directory.Build.props \ No newline at end of file diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props new file mode 100644 index 0000000..8621b71 --- /dev/null +++ b/tests/Directory.Build.props @@ -0,0 +1,28 @@ + + + + + + + false + true + + + + + + + + + + + + + @(VSTestLogger) + + + diff --git a/upload/.gitkeep b/upload/.gitkeep deleted file mode 120000 index 98ae275..0000000 --- a/upload/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -../.config/.gitkeep \ No newline at end of file diff --git a/upload/.gitkeep b/upload/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/xunit.runner.json b/xunit.runner.json new file mode 100644 index 0000000..fa78053 --- /dev/null +++ b/xunit.runner.json @@ -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 +}