Skip to content

Commit ce8e74f

Browse files
authored
Beta 4 (#24)
* Renamed ShouldBe to MarkupMatches * Tweaks to workflows * Tweaks to CD flow * Updated to AngleSharp Diffing 0.13.2 * Update HtmlComparer to work with AngleSharp Diffing 0.13.2 * Updated editorconfig * Simplyfied razor and snapshot tests * removed diagram * workflows * Added component update detection to rendered fragment * Added template project to main repo * tweaks to template * Update main.yml * Update main.yml * Update main.yml * new version pattern * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * new wildcard * Update main.yml * Update main.yml * Update main.yml * Fixed bug in template * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update nuget-pack-push.yml * test * Update nuget-pack-push.yml * Delete test.yml * Updates to readme and csproj packaging info * Update main.yml * Update main.yml * Updates to csproj * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update main.yml * Update Egil.RazorComponents.Testing.Library.csproj * Update Egil.RazorComponents.Testing.Library.csproj * Update Egil.RazorComponents.Testing.Library.csproj * Update main.yml * Fix identation * Added missing dispatch helpers. All dispatch helpers now tested. * Removed warnings
1 parent 04f61b0 commit ce8e74f

File tree

95 files changed

+4146
-1002
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+4146
-1002
lines changed

.editorconfig

Lines changed: 224 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,226 @@
1-
[*.cs]
1+
# Remove the line below if you want to inherit .editorconfig settings from higher directories
2+
root = true
23

3-
# CA1822: Mark members as static
4-
dotnet_diagnostic.CA1822.severity = suggestion
4+
# C# files
5+
[*.cs]
56

6-
# CA1032: Implement standard exception constructors
7-
dotnet_diagnostic.CA1032.severity = suggestion
7+
#### Core EditorConfig Options ####
8+
9+
# Indentation and spacing
10+
indent_size = 4
11+
indent_style = space
12+
tab_width = 4
13+
14+
# New line preferences
15+
end_of_line = crlf
16+
insert_final_newline = false
17+
18+
#### .NET Coding Conventions ####
19+
20+
# Organize usings
21+
dotnet_separate_import_directive_groups = false
22+
dotnet_sort_system_directives_first = true
23+
24+
# this. and Me. preferences
25+
dotnet_style_qualification_for_event = false:silent
26+
dotnet_style_qualification_for_field = false:silent
27+
dotnet_style_qualification_for_method = false:silent
28+
dotnet_style_qualification_for_property = false:silent
29+
30+
# Language keywords vs BCL types preferences
31+
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
32+
dotnet_style_predefined_type_for_member_access = true:silent
33+
34+
# Parentheses preferences
35+
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
36+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
37+
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
38+
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
39+
40+
# Modifier preferences
41+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
42+
43+
# Expression-level preferences
44+
dotnet_style_coalesce_expression = true:suggestion
45+
dotnet_style_collection_initializer = true:suggestion
46+
dotnet_style_explicit_tuple_names = true:suggestion
47+
dotnet_style_null_propagation = true:suggestion
48+
dotnet_style_object_initializer = true:suggestion
49+
dotnet_style_prefer_auto_properties = true:silent
50+
dotnet_style_prefer_compound_assignment = true:suggestion
51+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
52+
dotnet_style_prefer_conditional_expression_over_return = true:silent
53+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
54+
dotnet_style_prefer_inferred_tuple_names = true:suggestion
55+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
56+
57+
# Field preferences
58+
dotnet_style_readonly_field = true:suggestion
59+
60+
# Parameter preferences
61+
dotnet_code_quality_unused_parameters = all:suggestion
62+
63+
#### C# Coding Conventions ####
64+
65+
# var preferences
66+
csharp_style_var_elsewhere = true:silent
67+
csharp_style_var_for_built_in_types = true:silent
68+
csharp_style_var_when_type_is_apparent = true:silent
69+
70+
# Expression-bodied members
71+
csharp_style_expression_bodied_accessors = true:silent
72+
csharp_style_expression_bodied_constructors = when_on_single_line:silent
73+
csharp_style_expression_bodied_indexers = true:silent
74+
csharp_style_expression_bodied_lambdas = true:silent
75+
csharp_style_expression_bodied_local_functions = when_on_single_line:silent
76+
csharp_style_expression_bodied_methods = when_on_single_line:silent
77+
csharp_style_expression_bodied_operators = when_on_single_line:silent
78+
csharp_style_expression_bodied_properties = true:silent
79+
80+
# Pattern matching preferences
81+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
82+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
83+
csharp_style_prefer_switch_expression = true:suggestion
84+
85+
# Null-checking preferences
86+
csharp_style_conditional_delegate_call = true:suggestion
87+
88+
# Modifier preferences
89+
csharp_prefer_static_local_function = true:suggestion
90+
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
91+
92+
# Code-block preferences
93+
csharp_prefer_braces = when_multiline:silent
94+
csharp_prefer_simple_using_statement = true:suggestion
95+
96+
# Expression-level preferences
97+
csharp_prefer_simple_default_expression = true:suggestion
98+
csharp_style_deconstructed_variable_declaration = true:suggestion
99+
csharp_style_inlined_variable_declaration = true:suggestion
100+
csharp_style_pattern_local_over_anonymous_function = true:suggestion
101+
csharp_style_prefer_index_operator = true:suggestion
102+
csharp_style_prefer_range_operator = true:suggestion
103+
csharp_style_throw_expression = true:suggestion
104+
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
105+
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
106+
107+
# 'using' directive preferences
108+
csharp_using_directive_placement = outside_namespace:silent
109+
110+
#### C# Formatting Rules ####
111+
112+
# New line preferences
113+
csharp_new_line_before_catch = true
114+
csharp_new_line_before_else = true
115+
csharp_new_line_before_finally = true
116+
csharp_new_line_before_members_in_anonymous_types = true
117+
csharp_new_line_before_members_in_object_initializers = true
118+
csharp_new_line_before_open_brace = all
119+
csharp_new_line_between_query_expression_clauses = true
120+
121+
# Indentation preferences
122+
csharp_indent_block_contents = true
123+
csharp_indent_braces = false
124+
csharp_indent_case_contents = true
125+
csharp_indent_case_contents_when_block = false
126+
csharp_indent_labels = no_change
127+
csharp_indent_switch_labels = true
128+
129+
# Space preferences
130+
csharp_space_after_cast = false
131+
csharp_space_after_colon_in_inheritance_clause = true
132+
csharp_space_after_comma = true
133+
csharp_space_after_dot = false
134+
csharp_space_after_keywords_in_control_flow_statements = true
135+
csharp_space_after_semicolon_in_for_statement = true
136+
csharp_space_around_binary_operators = before_and_after
137+
csharp_space_around_declaration_statements = false
138+
csharp_space_before_colon_in_inheritance_clause = true
139+
csharp_space_before_comma = false
140+
csharp_space_before_dot = false
141+
csharp_space_before_open_square_brackets = false
142+
csharp_space_before_semicolon_in_for_statement = false
143+
csharp_space_between_empty_square_brackets = false
144+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
145+
csharp_space_between_method_call_name_and_opening_parenthesis = false
146+
csharp_space_between_method_call_parameter_list_parentheses = false
147+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
148+
csharp_space_between_method_declaration_name_and_open_parenthesis = false
149+
csharp_space_between_method_declaration_parameter_list_parentheses = false
150+
csharp_space_between_parentheses = false
151+
csharp_space_between_square_brackets = false
152+
153+
# Wrapping preferences
154+
csharp_preserve_single_line_blocks = true
155+
csharp_preserve_single_line_statements = true
156+
157+
#### Naming styles ####
158+
159+
# Naming rules
160+
161+
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
162+
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
163+
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
164+
165+
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
166+
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
167+
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
168+
169+
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
170+
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
171+
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
172+
173+
dotnet_naming_rule.static_field_should_be_pascal_case.severity = suggestion
174+
dotnet_naming_rule.static_field_should_be_pascal_case.symbols = static_field
175+
dotnet_naming_rule.static_field_should_be_pascal_case.style = pascal_case
176+
177+
dotnet_naming_rule.const_field_should_be_pascal_case.severity = suggestion
178+
dotnet_naming_rule.const_field_should_be_pascal_case.symbols = const_field
179+
dotnet_naming_rule.const_field_should_be_pascal_case.style = pascal_case
180+
181+
dotnet_naming_rule.private_or_internal_field_should_be_fields_begin_with__.severity = suggestion
182+
dotnet_naming_rule.private_or_internal_field_should_be_fields_begin_with__.symbols = private_or_internal_field
183+
dotnet_naming_rule.private_or_internal_field_should_be_fields_begin_with__.style = fields_begin_with__
184+
185+
# Symbol specifications
186+
187+
dotnet_naming_symbols.interface.applicable_kinds = interface
188+
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal
189+
dotnet_naming_symbols.interface.required_modifiers =
190+
191+
dotnet_naming_symbols.static_field.applicable_kinds = field
192+
dotnet_naming_symbols.static_field.applicable_accessibilities = public, internal, private, protected, protected_internal
193+
dotnet_naming_symbols.static_field.required_modifiers = static
194+
195+
dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
196+
dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private
197+
dotnet_naming_symbols.private_or_internal_field.required_modifiers =
198+
199+
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
200+
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal
201+
dotnet_naming_symbols.types.required_modifiers =
202+
203+
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
204+
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal
205+
dotnet_naming_symbols.non_field_members.required_modifiers =
206+
207+
dotnet_naming_symbols.const_field.applicable_kinds = field
208+
dotnet_naming_symbols.const_field.applicable_accessibilities = *
209+
dotnet_naming_symbols.const_field.required_modifiers = const
210+
211+
# Naming styles
212+
213+
dotnet_naming_style.pascal_case.required_prefix =
214+
dotnet_naming_style.pascal_case.required_suffix =
215+
dotnet_naming_style.pascal_case.word_separator =
216+
dotnet_naming_style.pascal_case.capitalization = pascal_case
217+
218+
dotnet_naming_style.begins_with_i.required_prefix = I
219+
dotnet_naming_style.begins_with_i.required_suffix =
220+
dotnet_naming_style.begins_with_i.word_separator =
221+
dotnet_naming_style.begins_with_i.capitalization = pascal_case
222+
223+
dotnet_naming_style.fields_begin_with__.required_prefix = _
224+
dotnet_naming_style.fields_begin_with__.required_suffix =
225+
dotnet_naming_style.fields_begin_with__.word_separator =
226+
dotnet_naming_style.fields_begin_with__.capitalization = camel_case

.github/workflows/main.yml

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,42 @@
1+
12
name: CI
23

34
on: [push, pull_request]
45

6+
env:
7+
VERSION: 1337.0.0
8+
BRANCH: ''
9+
COMMIT: ''
10+
511
jobs:
6-
build:
7-
env:
8-
VERSION: 1.0.0-beta-1337
12+
build:
13+
name: Build and verify library
914
runs-on: ubuntu-latest
10-
steps:
11-
- uses: actions/checkout@v1
15+
steps:
16+
- name: Setting environment variables
17+
run: |
18+
echo "::set-env name=BRANCH::$(echo ${GITHUB_REF#refs/heads/} | sed 's/\//_/g')"
19+
echo "::set-env name=COMMIT::$GITHUB_SHA"
20+
echo Version $VERSION - Branch $BRANCH - Commit $COMMIT
21+
- uses: actions/checkout@v1
22+
- name: Update tokens in project files
23+
uses: cschleiden/replace-tokens@v1
24+
with:
25+
files: '["*.csproj", "**/*.csproj"]'
1226
- uses: actions/setup-dotnet@v1
1327
with:
1428
dotnet-version: '3.1.100'
15-
- name: Building project
16-
run: dotnet build -c Release /nowarn:CS1591
17-
- name: Running tests
18-
run: dotnet test -c Release /nowarn:CS1591
19-
- name: Creating package
29+
- name: Building and verifying library
30+
run: |
31+
dotnet build -c Release
32+
dotnet test -c Release /nowarn:CS1591
33+
- name: Creating library package
2034
run: dotnet pack src/ -c Release -o ${GITHUB_WORKSPACE} -p:version=$VERSION /nowarn:CS1591
21-
- name: Find and Replace
22-
uses: jacobtomlinson/gha-find-replace@master
23-
with:
24-
find: "[[VERSION]]"
25-
replace: $VERSION
26-
include: "Company.RazorTests1.csproj"
27-
- name: Creating template package
28-
run: dotnet pack template/ -c Release -o ${GITHUB_WORKSPACE} -p:PackageVersion=$VERSION
35+
- name: Buidling template package
36+
run: dotnet pack template/ -c Release -o ${GITHUB_WORKSPACE} -p:version=$VERSION -p:PackageVersion=$VERSION
37+
- name: Verifying template
38+
run: |
39+
dotnet new --install ${GITHUB_WORKSPACE}/Razor.Components.Testing.Library.Template.$VERSION.nupkg
40+
dotnet new razortest -o ${GITHUB_WORKSPACE}/Test
41+
dotnet restore ${GITHUB_WORKSPACE}/Test/Test.csproj --source ${GITHUB_WORKSPACE}
42+
dotnet test ${GITHUB_WORKSPACE}/Test

.github/workflows/nuget-pack-push.yml

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,39 @@ on:
33
release:
44
types:
55
- published
6-
#- created
7-
#- edited
8-
#- deleted
9-
#- prereleased
6+
- created
7+
- edited
8+
- prereleased
9+
10+
env:
11+
VERSION: ${GITHUB_REF/refs\/tags\/v/}
1012

1113
jobs:
12-
build:
13-
name: Push ${{ github.ref }} to NUGET
14+
build:
15+
name: Build and verify library
1416
runs-on: ubuntu-latest
15-
steps:
16-
- uses: actions/checkout@v1
17-
- uses: actions/setup-dotnet@v1
18-
with:
19-
dotnet-version: '3.1.100'
20-
- name: Get the version
21-
id: get_version
22-
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/}
23-
- run: dotnet build -c Release -p:version=${{ steps.get_version.outputs.VERSION }} /nowarn:CS1591
24-
#- run: dotnet test -c Release -p:version=${{ steps.get_version.outputs.VERSION }} /nowarn:CS1591
25-
#- run: dotnet pack src/ -c Release -o ${GITHUB_WORKSPACE} -p:version=${{ steps.get_version.outputs.VERSION }} /nowarn:CS1591
26-
#- run: dotnet nuget push ${GITHUB_WORKSPACE}/*.nupkg -k ${{ secrets.NUGET_KEY }} -s https://api.nuget.org/v3/index.json
17+
steps:
18+
- uses: actions/checkout@v1
19+
- name: Update version string
20+
uses: cschleiden/replace-tokens@v1
21+
with:
22+
files: '["**/*.csproj"]'
23+
- uses: actions/setup-dotnet@v1
24+
with:
25+
dotnet-version: '3.1.100'
26+
- name: Building and verifying library
27+
run: |
28+
dotnet build -c Release
29+
dotnet test -c Release /nowarn:CS1591
30+
- name: Creating library package
31+
run: dotnet pack src/ -c Release -o ${GITHUB_WORKSPACE} -p:version=$VERSION /nowarn:CS1591
32+
- name: Buidling template package
33+
run: dotnet pack template/ -c Release -o ${GITHUB_WORKSPACE} -p:PackageVersion=$VERSION
34+
- name: Verifying template
35+
run: |
36+
dotnet new --install ${GITHUB_WORKSPACE}/Razor.Components.Testing.Library.Template.$VERSION.nupkg
37+
dotnet new razortest -o ${GITHUB_WORKSPACE}/Test
38+
dotnet restore ${GITHUB_WORKSPACE}/Test/Test.csproj --source ${GITHUB_WORKSPACE}
39+
dotnet test ${GITHUB_WORKSPACE}/Test
40+
#- name: Push packages to NuGet.org
41+
#run: dotnet nuget push ${GITHUB_WORKSPACE}/*.nupkg -k ${{ secrets.NUGET_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/egil/razor-components-testing-library/CI)](https://github.com/egil/razor-components-testing-library/actions?query=workflow%3ACI)
2-
[![GitHub tag (latest SemVer pre-release)](https://img.shields.io/github/v/tag/egil/razor-components-testing-library?include_prereleases)](https://github.com/egil/razor-components-testing-library/releases)
3-
[![Nuget](https://img.shields.io/nuget/vpre/Razor.Components.Testing.Library)](https://www.nuget.org/packages/Razor.Components.Testing.Library/)
4-
[![Issues Open](https://img.shields.io/github/issues/egil/razor-components-testing-library.svg?style=flat-square)](https://github.com/egil/razor-components-testing-library/issues)
5-
[![Gitter](https://badges.gitter.im/razor-components-testing-library/community.svg)](https://gitter.im/razor-components-testing-library/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
1+
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/egil/razor-components-testing-library/CI?logo=github)](https://github.com/egil/razor-components-testing-library/actions?query=workflow%3ACI)
2+
[![GitHub tag (latest SemVer pre-release)](https://img.shields.io/github/v/tag/egil/razor-components-testing-library?include_prereleases&logo=github)](https://github.com/egil/razor-components-testing-library/releases)
3+
[![Nuget](https://img.shields.io/nuget/dt/Razor.Components.Testing.Library?logo=nuget)](https://www.nuget.org/packages/Razor.Components.Testing.Library/)
4+
[![Issues Open](https://img.shields.io/github/issues/egil/razor-components-testing-library.svg?style=flat-square&logo=github)](https://github.com/egil/razor-components-testing-library/issues)
5+
[![Gitter](https://img.shields.io/gitter/room/razor-components-testing-library/community?logo=gitter)](https://gitter.im/razor-components-testing-library/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
66

77
# Blazor Components Testing Library
88

9-
A testing library for Blazor Components. You can easily define components under test in C# or Razor syntax, it has intelligent HTML diffing/comparison logic. You can easily interact with and inspect components, trigger event handlers, provide cascading values, inject services, mock `IJsRuntime`, and perform snapshot testing.
9+
A unit testing library for Blazor Components. You can easily define components under test in C# or Razor syntax and verify outcome using semantic HTML diffing/comparison logic. You can easily interact with and inspect components, trigger event handlers, provide cascading values, inject services, mock IJsRuntime, and perform snapshot testing.
1010

1111
This library's goal is to make it easy to write _comprehensive, stable unit tests_ for Blazor Components/Razor Components. To see how, head to the Wiki pages:
1212

Razor.Components.Testing.Library.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Egil.RazorComponents.Testin
2525
EndProject
2626
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Egil.RazorComponents.Testing.Library.SampleApp.Tests", "sample\tests\Egil.RazorComponents.Testing.Library.SampleApp.Tests.csproj", "{A7B05744-AA61-4F8E-8173-5DE812A4A745}"
2727
EndProject
28+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Razor.Components.Testing.Library.Template", "template\Razor.Components.Testing.Library.Template.csproj", "{FB46378D-BFB8-4C72-9CA3-0407D4665218}"
29+
EndProject
2830
Global
2931
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3032
Debug|Any CPU = Debug|Any CPU
@@ -47,6 +49,10 @@ Global
4749
{A7B05744-AA61-4F8E-8173-5DE812A4A745}.Debug|Any CPU.Build.0 = Debug|Any CPU
4850
{A7B05744-AA61-4F8E-8173-5DE812A4A745}.Release|Any CPU.ActiveCfg = Release|Any CPU
4951
{A7B05744-AA61-4F8E-8173-5DE812A4A745}.Release|Any CPU.Build.0 = Release|Any CPU
52+
{FB46378D-BFB8-4C72-9CA3-0407D4665218}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53+
{FB46378D-BFB8-4C72-9CA3-0407D4665218}.Debug|Any CPU.Build.0 = Debug|Any CPU
54+
{FB46378D-BFB8-4C72-9CA3-0407D4665218}.Release|Any CPU.ActiveCfg = Release|Any CPU
55+
{FB46378D-BFB8-4C72-9CA3-0407D4665218}.Release|Any CPU.Build.0 = Release|Any CPU
5056
EndGlobalSection
5157
GlobalSection(SolutionProperties) = preSolution
5258
HideSolutionNode = FALSE
@@ -56,6 +62,7 @@ Global
5662
{04E0142A-33CC-4E30-B903-F1370D94AD8C} = {C929375E-BD70-4B78-88C1-BDD1623C3365}
5763
{D1FE0F2A-D856-417E-A1FD-4ECE9C64D3AE} = {26D90CB9-AF66-4F42-A16E-39D2CF69C8FB}
5864
{A7B05744-AA61-4F8E-8173-5DE812A4A745} = {26D90CB9-AF66-4F42-A16E-39D2CF69C8FB}
65+
{FB46378D-BFB8-4C72-9CA3-0407D4665218} = {E006E9A4-F554-46DF-838F-812956521F64}
5966
EndGlobalSection
6067
GlobalSection(ExtensibilityGlobals) = postSolution
6168
SolutionGuid = {24106918-1C86-4769-BDA6-9C80E64CD260}

0 commit comments

Comments
 (0)