Skip to content
Merged
Show file tree
Hide file tree
Changes from 27 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
d360ef2
CoreEx.Database.Postgres project introduction.
chullybun May 5, 2026
62c9864
Refactor Products sample to leverage PostgreSQL.
chullybun May 8, 2026
cf13ff3
Update to use interim schema for dbex yaml.
chullybun May 8, 2026
a6521c0
Generator fixes.
chullybun May 8, 2026
e403d5f
DbEx finalized version.
chullybun May 11, 2026
61775ff
Merge from latest release/4
chullybun May 11, 2026
8ff2688
Orders merge, and refactor/regen.
chullybun May 12, 2026
1124aa7
CI.yml added.
chullybun May 12, 2026
660f24b
Fix CI.yml
chullybun May 12, 2026
491684d
Add slnf files to aid CI.
chullybun May 12, 2026
1eac786
Further tweaks to CI and test fix.
chullybun May 12, 2026
a6f6c26
CI fix.
chullybun May 12, 2026
00b2b66
Split parrallel and sequential for core to improve perf.
chullybun May 12, 2026
ba40c56
Test fixes.
chullybun May 13, 2026
6f7b9a2
Add retry to CircuitBreaker test.
chullybun May 13, 2026
016a67b
Fix parallelism for samples.
chullybun May 13, 2026
41ec4f9
Another parallelism fix.
chullybun May 13, 2026
e435504
Another parallelism fix attemp?!
chullybun May 13, 2026
c655f51
Another parallelism crack :-(
chullybun May 13, 2026
0f50ce8
Fix async bug.
chullybun May 13, 2026
43cf54a
NUnit result fix for retry.
chullybun May 13, 2026
8e70b7c
Another CI fix.
chullybun May 13, 2026
df67899
Fixes related to PR comments.
chullybun May 14, 2026
83fcc75
Re-gen sql procs.
chullybun May 14, 2026
9c515a0
Tweaks based on review.
chullybun May 14, 2026
0ec9a7d
Puch CI tweak.
chullybun May 14, 2026
59f058c
Another CI tweak.
chullybun May 14, 2026
3702362
Sneak last - link to DTS from Aspire dashboard.
chullybun May 14, 2026
055a64c
Wrap up tweaks.
chullybun May 15, 2026
533eb8b
CI tweak.
chullybun May 15, 2026
fdbc56e
Review feedback tweaks.
chullybun May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-reportgenerator-globaltool": {
"version": "5.4.5",
"commands": [
"reportgenerator"
]
}
}
}
12 changes: 9 additions & 3 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ CoreEx is a modular .NET framework for enterprise APIs and distributed services.
### CoreEx-First Patterns
- Prefer CoreEx primitives before introducing external libraries that overlap with framework capabilities.
- Prefer CoreEx exception types (`NotFoundException`, `ValidationException`, `BusinessException`, `ConcurrencyException`, etc.) and CoreEx `Result`/`Result<T>` flows over custom error wrappers.
- Do not introduce AutoMapper unless the user explicitly requests it. Repositories and services use explicit mapping helpers/classes.
- Do not introduce AutoMapper in any repository unless the repository maintainer explicitly requests it. Repositories and services use explicit mapping helpers/classes.

### Contracts and Source Generation
- Contracts are commonly declared as `[Contract] public partial class ...`.
Expand Down Expand Up @@ -97,6 +97,12 @@ CoreEx is a modular .NET framework for enterprise APIs and distributed services.
- Use `GlobalUsing.cs` per project; do not scatter `using` directives.
- Always use `.ConfigureAwait(false)` in service/repository code.

### Generated Code
- Do not edit generated code directly. If changes are needed, update the source templates or generation logic.
- Generated code files are typically marked with a comment at the top indicating they are auto-generated and should not be edited manually.
- Generated code also has the file name pattern `*.g.cs`, `*.g.sql`, `*.g.pgsql` or similar to indicate its nature.
- Copilot should not suggest edits to generated code files. If it does, the suggestion should be rejected or redirected to the source templates.

## Key Docs to Read Before Large Changes
- `README.md` for repo-level positioning and top-level commands.
- `samples\README.md` for the runnable Contoso architecture and local setup.
Expand All @@ -119,7 +125,7 @@ The following prompts and skills are available in this repository. Type `/` in c

When creating or maintaining Copilot instruction files and skills:

- **Instruction files** (`.instructions.md`) — see [INSTRUCTION_AUTHORING.md](.github/INSTRUCTION_AUTHORING.md) for standards on YAML frontmatter, section order, and content rules.
- **Skill files** (`SKILL.md`) — see [SKILL_AUTHORING.md](.github/SKILL_AUTHORING.md) for the directory structure pattern (`references/`, `assets/`), lean main file rules (<300 lines), and cross-referencing guidelines.
- **Instruction files** (`.instructions.md`) — see [INSTRUCTION_AUTHORING.md](./INSTRUCTION_AUTHORING.md) for standards on YAML frontmatter, section order, and content rules.
- **Skill files** (`SKILL.md`) — see [SKILL_AUTHORING.md](./SKILL_AUTHORING.md) for the directory structure pattern (`references/`, `assets/`), lean main file rules (<300 lines), and cross-referencing guidelines.

Both documents define durable patterns for creating guidance that is discoverable, maintainable, and context-efficient.
142 changes: 142 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: CI

on:
push:
branches: [main]
paths:
- 'src/**'
- 'tests/**'
- 'samples/**'
- 'gen/**'
- 'servicebus/**'
pull_request:
paths:
- 'src/**'
- 'tests/**'
- 'samples/**'
- 'gen/**'
- 'servicebus/**'
Comment on lines +6 to +24
Comment thread
chullybun marked this conversation as resolved.
workflow_dispatch:

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 60

steps:
- uses: actions/checkout@v4

- name: Start containers
run: docker compose up -d

Comment thread
chullybun marked this conversation as resolved.
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
8.x
9.x
10.x

- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: nuget-${{ runner.os }}-${{ hashFiles('**/*.csproj', '**/Directory.Packages.props') }}
restore-keys: nuget-${{ runner.os }}-

- name: Restore .NET tools
run: dotnet tool restore

- name: Restore (all)
run: dotnet restore CoreEx.sln --verbosity minimal

# --- Core ---

- name: Build core
run: dotnet build CoreEx.Core.slnf --no-restore --configuration Release

- name: Test core (parallel)
run: dotnet test CoreEx.Core.Test.Parallel.slnf --no-build --configuration Release --logger trx --collect "XPlat Code Coverage" --results-directory coverage/core

- name: Test core (sequential)
run: dotnet test CoreEx.Core.Test.Sequential.slnf --no-build --configuration Release --logger trx --collect "XPlat Code Coverage" --results-directory coverage/core -m:1 -p:TestTfmsInParallel=false -p:BuildInParallel=false

- name: Upload core test results
if: always()
uses: actions/upload-artifact@v4
with:
name: core-test-results
path: "coverage/core/**/*.trx"
retention-days: 30

# --- Samples ---

- name: Build samples
run: dotnet build CoreEx.Samples.Build.slnf --no-restore --configuration Release

- name: Database tool (samples/src/Contoso.Products.Database)
working-directory: samples/src/Contoso.Products.Database
run: dotnet run all --no-build --configuration Release -f net10.0 --expect-no-changes

- name: Database tool (samples/src/Contoso.Shopping.Database)
working-directory: samples/src/Contoso.Shopping.Database
run: dotnet run all --no-build --configuration Release -f net10.0 --expect-no-changes

- name: Database tool (samples/src/Contoso.Orders.Database)
working-directory: samples/src/Contoso.Orders.Database
run: dotnet run all --no-build --configuration Release -f net10.0 --expect-no-changes

- name: Test samples
run: dotnet test CoreEx.Samples.Test.slnf --no-build --configuration Release --logger trx --collect "XPlat Code Coverage" --results-directory coverage/samples -m:1 -p:TestTfmsInParallel=false -p:BuildInParallel=false

- name: Upload samples test results
if: always()
uses: actions/upload-artifact@v4
with:
name: samples-test-results
path: "coverage/samples/**/*.trx"
retention-days: 30

# --- Coverage ---

- name: Merge and generate coverage report
if: always()
run: |
dotnet tool run reportgenerator \
-reports:"coverage/**/coverage.cobertura.xml" \
-targetdir:"coverage/report" \
-reporttypes:"HtmlInline_AzurePipelines;Cobertura;Badges" \
-assemblyfilters:"-*Test*;-*E2E*"

- name: Upload coverage report
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/report
retention-days: 30

# --- Cleanup ---

- name: Capture container logs on failure
if: failure()
run: docker compose logs --no-color > container-logs.txt 2>&1

- name: Upload container logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: container-logs
path: container-logs.txt
retention-days: 30

- name: Stop containers
if: always()
run: docker compose down
15 changes: 15 additions & 0 deletions CoreEx.Core.Test.Parallel.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"solution": {
"path": "CoreEx.sln",
"projects": [
"tests/CoreEx.Test.Unit/CoreEx.Test.Unit.csproj",
"tests/CoreEx.AspNetCore.Test.Unit/CoreEx.AspNetCore.Test.Unit.csproj",
"tests/CoreEx.Data.Test.Unit/CoreEx.Data.Test.Unit.csproj",
"tests/CoreEx.Database.Test.Unit/CoreEx.Database.Test.Unit.csproj",
"tests/CoreEx.DomainDriven.Test.Unit/CoreEx.DomainDriven.Test.Unit.csproj",
"tests/CoreEx.Events.Test.Unit/CoreEx.Events.Test.Unit.csproj",
"tests/CoreEx.RefData.Test.Unit/CoreEx.RefData.Test.Unit.csproj",
"tests/CoreEx.Validation.Test.Unit/CoreEx.Validation.Test.Unit.csproj"
]
}
}
11 changes: 11 additions & 0 deletions CoreEx.Core.Test.Sequential.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"solution": {
"path": "CoreEx.sln",
"projects": [
"tests/CoreEx.Azure.Messaging.ServiceBus.Test.Unit/CoreEx.Azure.Messaging.ServiceBus.Test.Unit.csproj",
"tests/CoreEx.Caching.Redis.Test.Unit/CoreEx.Caching.Redis.Test.Unit.csproj",
"tests/CoreEx.Database.SqlServer.Test.Unit/CoreEx.Database.SqlServer.Test.Unit.csproj",
"tests/CoreEx.Database.Postgres.Test.Unit/CoreEx.Database.Postgres.Test.Unit.csproj"
]
}
}
35 changes: 35 additions & 0 deletions CoreEx.Core.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"solution": {
"path": "CoreEx.sln",
"projects": [
"src/CoreEx/CoreEx.csproj",
"src/CoreEx.AspNetCore/CoreEx.AspNetCore.csproj",
"src/CoreEx.AspNetCore.NSwag/CoreEx.AspNetCore.NSwag.csproj",
"src/CoreEx.Azure.Messaging.ServiceBus/CoreEx.Azure.Messaging.ServiceBus.csproj",
"src/CoreEx.Caching.FusionCache/CoreEx.Caching.FusionCache.csproj",
"src/CoreEx.Data/CoreEx.Data.csproj",
"src/CoreEx.Database/CoreEx.Database.csproj",
"src/CoreEx.Database.Postgres/CoreEx.Database.Postgres.csproj",
"src/CoreEx.Database.SqlServer/CoreEx.Database.SqlServer.csproj",
"src/CoreEx.DomainDriven/CoreEx.DomainDriven.csproj",
"src/CoreEx.EntityFrameworkCore/CoreEx.EntityFrameworkCore.csproj",
"src/CoreEx.Events/CoreEx.Events.csproj",
"src/CoreEx.RefData/CoreEx.RefData.csproj",
"src/CoreEx.UnitTesting/CoreEx.UnitTesting.csproj",
"src/CoreEx.Validation/CoreEx.Validation.csproj",
"tests/CoreEx.AspNetCore.Test.Api/CoreEx.AspNetCore.Test.Api.csproj",
"tests/CoreEx.AspNetCore.Test.Unit/CoreEx.AspNetCore.Test.Unit.csproj",
"tests/CoreEx.Azure.Messaging.ServiceBus.Test.Unit/CoreEx.Azure.Messaging.ServiceBus.Test.Unit.csproj",
"tests/CoreEx.Caching.Redis.Test.Unit/CoreEx.Caching.Redis.Test.Unit.csproj",
"tests/CoreEx.Data.Test.Unit/CoreEx.Data.Test.Unit.csproj",
"tests/CoreEx.Database.Postgres.Test.Unit/CoreEx.Database.Postgres.Test.Unit.csproj",
"tests/CoreEx.Database.SqlServer.Test.Unit/CoreEx.Database.SqlServer.Test.Unit.csproj",
"tests/CoreEx.Database.Test.Unit/CoreEx.Database.Test.Unit.csproj",
"tests/CoreEx.DomainDriven.Test.Unit/CoreEx.DomainDriven.Test.Unit.csproj",
"tests/CoreEx.Events.Test.Unit/CoreEx.Events.Test.Unit.csproj",
"tests/CoreEx.RefData.Test.Unit/CoreEx.RefData.Test.Unit.csproj",
"tests/CoreEx.Test.Unit/CoreEx.Test.Unit.csproj",
"tests/CoreEx.Validation.Test.Unit/CoreEx.Validation.Test.Unit.csproj"
]
}
}
42 changes: 42 additions & 0 deletions CoreEx.Samples.Build.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"solution": {
"path": "CoreEx.sln",
"projects": [
"samples/aspire/Contoso.Aspire/Contoso.Aspire.csproj",
"samples/src/Contoso.Order.Workflow.Client/Contoso.Order.Workflow.Client.csproj",
"samples/src/Contoso.Order.Workflow.Worker/Contoso.Order.Workflow.Worker.csproj",
"samples/src/Contoso.Order.Workflow.Workflow/Contoso.Order.Workflow.Workflow.csproj",
"samples/src/Contoso.Orders.Api/Contoso.Orders.Api.csproj",
"samples/src/Contoso.Orders.Application/Contoso.Orders.Application.csproj",
"samples/src/Contoso.Orders.Contracts/Contoso.Orders.Contracts.csproj",
"samples/src/Contoso.Orders.Database/Contoso.Orders.Database.csproj",
"samples/src/Contoso.Orders.Infrastructure/Contoso.Orders.Infrastructure.csproj",
"samples/src/Contoso.Products.Api/Contoso.Products.Api.csproj",
"samples/src/Contoso.Products.Application/Contoso.Products.Application.csproj",
"samples/src/Contoso.Products.Contracts/Contoso.Products.Contracts.csproj",
"samples/src/Contoso.Products.Database/Contoso.Products.Database.csproj",
"samples/src/Contoso.Products.Infrastructure/Contoso.Products.Infrastructure.csproj",
"samples/src/Contoso.Products.Outbox.Relay/Contoso.Products.Outbox.Relay.csproj",
"samples/src/Contoso.Products.Subscribe/Contoso.Products.Subscribe.csproj",
"samples/src/Contoso.Shopping.Api/Contoso.Shopping.Api.csproj",
"samples/src/Contoso.Shopping.Application/Contoso.Shopping.Application.csproj",
"samples/src/Contoso.Shopping.Contracts/Contoso.Shopping.Contracts.csproj",
"samples/src/Contoso.Shopping.Database/Contoso.Shopping.Database.csproj",
"samples/src/Contoso.Shopping.Domain/Contoso.Shopping.Domain.csproj",
"samples/src/Contoso.Shopping.Infrastructure/Contoso.Shopping.Infrastructure.csproj",
"samples/src/Contoso.Shopping.Outbox.Relay/Contoso.Shopping.Outbox.Relay.csproj",
"samples/src/Contoso.Shopping.Subscribe/Contoso.Shopping.Subscribe.csproj",
"samples/tests/Contoso.E2E.Runner/Contoso.E2E.Runner.csproj",
"samples/tests/Contoso.Orders.Test.Api/Contoso.Orders.Test.Api.csproj",
"samples/tests/Contoso.Orders.Test.Common/Contoso.Orders.Test.Common.csproj",
"samples/tests/Contoso.Orders.Test.Unit/Contoso.Orders.Test.Unit.csproj",
"samples/tests/Contoso.Products.Test.Api/Contoso.Products.Test.Api.csproj",
"samples/tests/Contoso.Products.Test.Common/Contoso.Products.Test.Common.csproj",
"samples/tests/Contoso.Products.Test.Outbox.Relay/Contoso.Products.Test.Outbox.Relay.csproj",
"samples/tests/Contoso.Products.Test.Subscribe/Contoso.Products.Test.Subscribe.csproj",
"samples/tests/Contoso.Products.Test.Unit/Contoso.Products.Test.Unit.csproj",
"samples/tests/Contoso.Shopping.Test.Api/Contoso.Shopping.Test.Api.csproj",
"samples/tests/Contoso.Shopping.Test.Common/Contoso.Shopping.Test.Common.csproj"
]
}
}
14 changes: 14 additions & 0 deletions CoreEx.Samples.Test.slnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"solution": {
"path": "CoreEx.sln",
"projects": [
"samples/tests/Contoso.Orders.Test.Api/Contoso.Orders.Test.Api.csproj",
"samples/tests/Contoso.Orders.Test.Unit/Contoso.Orders.Test.Unit.csproj",
"samples/tests/Contoso.Products.Test.Api/Contoso.Products.Test.Api.csproj",
"samples/tests/Contoso.Products.Test.Outbox.Relay/Contoso.Products.Test.Outbox.Relay.csproj",
"samples/tests/Contoso.Products.Test.Subscribe/Contoso.Products.Test.Subscribe.csproj",
"samples/tests/Contoso.Products.Test.Unit/Contoso.Products.Test.Unit.csproj",
"samples/tests/Contoso.Shopping.Test.Api/Contoso.Shopping.Test.Api.csproj"
]
}
}
46 changes: 46 additions & 0 deletions CoreEx.sln
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
nuget-publish.ps1 = nuget-publish.ps1
README.md = README.md
SECURITY.md = SECURITY.md
strong-name-key.snk = strong-name-key.snk
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreEx.RefData", "src\CoreEx.RefData\CoreEx.RefData.csproj", "{F3F98268-80E9-4441-B6C9-8D384EE9C857}"
Expand Down Expand Up @@ -196,6 +197,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreEx.Generator", "gen\Cor
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "gen", "{570F3635-BEB1-4067-B10F-33DD890BDBD4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreEx.Database.Postgres", "src\CoreEx.Database.Postgres\CoreEx.Database.Postgres.csproj", "{1855A84E-4876-49A4-AC22-3881ECAB2534}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreEx.Database.Postgres.Test.Console", "tests\CoreEx.Database.Postgres.Test.Console\CoreEx.Database.Postgres.Test.Console.csproj", "{06B73659-3DFE-41B2-B8DF-42C25CD547D6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CoreEx.Database.Postgres.Test.Unit", "tests\CoreEx.Database.Postgres.Test.Unit\CoreEx.Database.Postgres.Test.Unit.csproj", "{6C876E5E-5972-4801-9565-E314545BBB06}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -962,6 +969,42 @@ Global
{54CD8587-0F45-2C2C-7AE4-BB92254202F5}.Release|x64.Build.0 = Release|Any CPU
{54CD8587-0F45-2C2C-7AE4-BB92254202F5}.Release|x86.ActiveCfg = Release|Any CPU
{54CD8587-0F45-2C2C-7AE4-BB92254202F5}.Release|x86.Build.0 = Release|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Debug|x64.ActiveCfg = Debug|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Debug|x64.Build.0 = Debug|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Debug|x86.ActiveCfg = Debug|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Debug|x86.Build.0 = Debug|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Release|Any CPU.Build.0 = Release|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Release|x64.ActiveCfg = Release|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Release|x64.Build.0 = Release|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Release|x86.ActiveCfg = Release|Any CPU
{1855A84E-4876-49A4-AC22-3881ECAB2534}.Release|x86.Build.0 = Release|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Debug|x64.ActiveCfg = Debug|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Debug|x64.Build.0 = Debug|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Debug|x86.ActiveCfg = Debug|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Debug|x86.Build.0 = Debug|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Release|Any CPU.Build.0 = Release|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Release|x64.ActiveCfg = Release|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Release|x64.Build.0 = Release|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Release|x86.ActiveCfg = Release|Any CPU
{06B73659-3DFE-41B2-B8DF-42C25CD547D6}.Release|x86.Build.0 = Release|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Debug|x64.ActiveCfg = Debug|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Debug|x64.Build.0 = Debug|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Debug|x86.ActiveCfg = Debug|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Debug|x86.Build.0 = Debug|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Release|Any CPU.Build.0 = Release|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Release|x64.ActiveCfg = Release|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Release|x64.Build.0 = Release|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Release|x86.ActiveCfg = Release|Any CPU
{6C876E5E-5972-4801-9565-E314545BBB06}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -1046,6 +1089,9 @@ Global
{70E70027-97A1-4862-953F-32874684A334} = {848DC6FA-94E0-4805-9107-501102BC4A6D}
{09E56536-DD59-49BD-A48F-41299C5B7ABF} = {95780E7B-43ED-4404-8917-A46D4DC30083}
{54CD8587-0F45-2C2C-7AE4-BB92254202F5} = {570F3635-BEB1-4067-B10F-33DD890BDBD4}
{1855A84E-4876-49A4-AC22-3881ECAB2534} = {F31B53BC-66DD-4844-8349-D4B0CB04EA12}
{06B73659-3DFE-41B2-B8DF-42C25CD547D6} = {D37F89FC-A03D-4501-8414-34AE0C6FC765}
{6C876E5E-5972-4801-9565-E314545BBB06} = {D37F89FC-A03D-4501-8414-34AE0C6FC765}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {99046729-5A7F-41B6-9415-F77D8E9C44F1}
Expand Down
Loading
Loading