Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
05b25ed
feat: implement migration tooling phases 1 and 2
MaxAkbarViking Jul 22, 2026
60c62db
feat: implement migration validation and activation
MaxAkbarViking Jul 22, 2026
7830c4b
feat: complete archive restore safety net
MaxAkbarViking Jul 22, 2026
11ea1d0
feat: add streaming CSV reader foundation
MaxAkbarViking Jul 22, 2026
1c70513
feat: add deterministic CSV source inspection
MaxAkbarViking Jul 22, 2026
052d15a
feat: add bounded CSV schema inference
MaxAkbarViking Jul 22, 2026
ce3d5b8
feat: add replayable CSV migration source
MaxAkbarViking Jul 22, 2026
840f082
feat: add durable CSV snapshot packages
MaxAkbarViking Jul 23, 2026
57a76e4
feat: wire retained CSV migrations into CLI
MaxAkbarViking Jul 23, 2026
8dab862
feat: enforce and qualify CSV resource bounds
MaxAkbarViking Jul 23, 2026
5150ace
feat: add deterministic migration reject contract
MaxAkbarViking Jul 23, 2026
a90bd35
feat: add atomic migration reject ledger
MaxAkbarViking Jul 23, 2026
e6dc59a
test: qualify migration reject crash recovery
MaxAkbarViking Jul 23, 2026
3b84005
feat: add reject-aware CSV source replay
MaxAkbarViking Jul 23, 2026
217db5f
feat: validate deterministic migration rejects
MaxAkbarViking Jul 23, 2026
b9d3b00
feat: publish deterministic migration reject artifacts
MaxAkbarViking Jul 23, 2026
8b8dd89
feat: enable deterministic CSV rejects in CLI
MaxAkbarViking Jul 23, 2026
f2c5bd5
feat: define typed CSV export manifests
MaxAkbarViking Jul 23, 2026
7f6ed0f
feat: add retained database export snapshots
MaxAkbarViking Jul 23, 2026
3e09e70
feat: stream retained snapshot rows by physical id
MaxAkbarViking Jul 23, 2026
683f195
feat: add deterministic streaming CSV export
MaxAkbarViking Jul 23, 2026
2b76201
feat: define resumable CSV export checkpoints
MaxAkbarViking Jul 23, 2026
c556ccf
feat: add durable CSV prepared output journal
MaxAkbarViking Jul 23, 2026
30dc930
feat: add resumable CSV export coordinator
MaxAkbarViking Jul 23, 2026
1414caf
feat: bind CSV export to retained snapshots
MaxAkbarViking Jul 23, 2026
c4a3a5c
feat: publish resumable CSV outputs manifest last
MaxAkbarViking Jul 23, 2026
c74eff2
feat: add resumable retained CSV export CLI
MaxAkbarViking Jul 23, 2026
a6c9ad5
test: qualify CSV export process crash recovery
MaxAkbarViking Jul 23, 2026
90657f5
feat: add bounded streaming JSON reader
MaxAkbarViking Jul 23, 2026
5d7eaf6
feat: bind immutable JSON sources
MaxAkbarViking Jul 23, 2026
1d1e524
feat: infer JSON object table schemas
MaxAkbarViking Jul 23, 2026
135014b
feat: stream catalog-bound JSON migration rows
MaxAkbarViking Jul 23, 2026
0abd588
fix: preserve JSON serializer overloads
MaxAkbarViking Jul 23, 2026
86b072b
feat: retain portable JSON migration snapshots
MaxAkbarViking Jul 24, 2026
2dd9926
feat: add source-bound JSON typed intent sidecars
MaxAkbarViking Jul 24, 2026
28aa41b
feat: apply typed JSON table intents
MaxAkbarViking Jul 24, 2026
74c2aa3
feat: retain typed JSON migration snapshots
MaxAkbarViking Jul 24, 2026
d67f1a4
feat: stream JSON and NDJSON exports
MaxAkbarViking Jul 24, 2026
85a454c
feat: publish retained JSON exports
MaxAkbarViking Jul 24, 2026
3bd0c7d
fix: bind JSON export parent paths exactly
MaxAkbarViking Jul 24, 2026
824a9f2
feat: add JSON export checkpoint contracts
MaxAkbarViking Jul 24, 2026
8ca6461
refactor: prepare JSON exporter for resume
MaxAkbarViking Jul 24, 2026
7c998f6
feat: add resumable JSON export coordinator
MaxAkbarViking Jul 24, 2026
b4d04de
feat: add durable JSON export checkpoints
MaxAkbarViking Jul 24, 2026
ebdc620
feat: reclaim deterministic JSON publication staging
MaxAkbarViking Jul 24, 2026
1a52e6d
feat: publish resumable JSON exports
MaxAkbarViking Jul 24, 2026
a7390ff
feat: resume retained JSON exports
MaxAkbarViking Jul 24, 2026
ee0a7d5
feat: route retained JSON imports through CLI
MaxAkbarViking Jul 24, 2026
5d0510d
feat: enable deterministic JSON rejects in CLI
MaxAkbarViking Jul 24, 2026
507812e
feat: route typed JSON packages through CLI
MaxAkbarViking Jul 24, 2026
00ea810
feat: complete phase 4 file migration
MaxAkbarViking Jul 24, 2026
8f822d7
remove migration plans
MaxAkbarViking Jul 24, 2026
a73b9d9
feat: add SQLite migration inspection
MaxAkbarViking Jul 24, 2026
34dc153
feat: complete retained SQLite migrations
MaxAkbarViking Jul 24, 2026
5836597
feat: add LiteDB inspection and SQL proof foundations
MaxAkbarViking Jul 24, 2026
993d983
feat: add SQL Server catalog readiness foundation
MaxAkbarViking Jul 24, 2026
2ee9b8e
feat: add SQL Server relational inventory
MaxAkbarViking Jul 24, 2026
3cf3d3b
feat: inventory SQL Server programmable objects
MaxAkbarViking Jul 24, 2026
0a9ee0e
feat: add bounded SQL Server T-SQL analysis
MaxAkbarViking Jul 24, 2026
689ae24
feat: add deterministic CSharpDB DDL previews
MaxAkbarViking Jul 24, 2026
db5ec27
test: pin CSharpDB DDL preview contract
MaxAkbarViking Jul 24, 2026
e6159be
feat: add bounded CSharpDB DDL scratch validation
MaxAkbarViking Jul 24, 2026
9baf218
test: prove SQL Server target DDL integration
MaxAkbarViking Jul 24, 2026
00a8890
feat: add bounded SQL Server migration CLI
MaxAkbarViking Jul 24, 2026
12e35a6
feat: seal migration plans to bounded DDL
MaxAkbarViking Jul 25, 2026
42045a1
feat: inventory SQL Server physical metadata
MaxAkbarViking Jul 25, 2026
da2a6d9
feat: inventory SQL Server index subtypes
MaxAkbarViking Jul 25, 2026
598c57c
feat: isolate SQL Server migration adapter
MaxAkbarViking Jul 25, 2026
6f30545
feat: add MySQL migration catalog foundation
MaxAkbarViking Jul 25, 2026
095b0df
feat: inventory MySQL relational metadata
MaxAkbarViking Jul 25, 2026
483fa08
feat: inventory MySQL programmable metadata
MaxAkbarViking Jul 25, 2026
c0f749e
feat: isolate MySQL migration adapter
MaxAkbarViking Jul 25, 2026
56e1829
feat: add CSharpDB DDL compatibility proof
MaxAkbarViking Jul 25, 2026
1023837
feat: add bounded T-SQL DDL compatibility proof
MaxAkbarViking Jul 25, 2026
6c5d73d
feat: add EF Core migration analyzer
MaxAkbarViking Jul 25, 2026
89c367e
feat: add EF scratch-chain validation
MaxAkbarViking Jul 25, 2026
b121471
feat: qualify migration MVP for 4.3.0
MaxAkbarViking Jul 26, 2026
337e012
feat: add retained LiteDB migration
MaxAkbarViking Jul 26, 2026
e82f788
feat: add retained SQL Server migration
MaxAkbarViking Jul 26, 2026
0f6a978
feat: add retained MySQL migration
MaxAkbarViking Jul 26, 2026
dbcf4df
feat: package and document migration tooling
MaxAkbarViking Jul 26, 2026
6728bba
docs: add version4.3.0 PR notes
MaxAkbarViking Jul 26, 2026
5d69b65
add version 4.3.0 notes
MaxAkbarViking Jul 26, 2026
613ab11
feat: complete migration tooling suite
MaxAkbarViking Jul 26, 2026
f04f907
chore: remove obsolete core migration material
MaxAkbarViking Jul 27, 2026
541227e
fix: stabilize Unix migration file handling
MaxAkbarViking Jul 27, 2026
7e54b45
ci: isolate macOS temporary files
MaxAkbarViking Jul 27, 2026
442b24e
fix: stabilize hosted Unix migration checks
MaxAkbarViking Jul 27, 2026
a17895b
ci: expose remaining hosted Unix failures
MaxAkbarViking Jul 27, 2026
e4781a6
test: pinpoint Unix reject file metadata failures
MaxAkbarViking Jul 27, 2026
4063690
fix: create private macOS migration artifacts
MaxAkbarViking Jul 27, 2026
e602652
test: shorten Unix crash recovery pipe names
MaxAkbarViking Jul 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
* text=auto

.gitattributes text eol=lf
*.cs text eol=lf
*.csproj text eol=lf
*.props text eol=lf
Expand All @@ -10,6 +11,7 @@
*.yaml text eol=lf
*.xml text eol=lf
*.editorconfig text eol=lf
*.sh text eol=lf

*.sln text eol=crlf
*.bat text eol=crlf
Expand Down
52 changes: 49 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,13 @@ jobs:
with:
global-json-file: global.json

- name: Guard legacy primitives identity
shell: pwsh
run: ./scripts/Test-NoLegacyCoreReferences.ps1
- name: Use private link-free temporary directory (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
temp_directory="$(mktemp -d /private/tmp/csharpdb-ci.XXXXXX)"
chmod 700 "${temp_directory}"
echo "TMPDIR=${temp_directory}" >> "${GITHUB_ENV}"

- name: Guard NuGet package dependency closure
shell: pwsh
Expand All @@ -54,6 +58,16 @@ jobs:
- name: Build
run: dotnet build CSharpDB.slnx -c Release --no-restore

- name: Verify macOS reject-artifact publication
if: runner.os == 'macOS'
shell: bash
run: |
dotnet test tests/CSharpDB.Migration.Tests/CSharpDB.Migration.Tests.csproj \
-c Release \
--no-build \
--filter "FullyQualifiedName~WriteAsync_PublishesHeaderOnlyArtifactForEmptyEvidence|FullyQualifiedName~WriteAsync_ReclaimsPrivateStaleTemporaryArtifact|FullyQualifiedName~WriteAsync_RemovesMacOsAclFromPrivateStaleTemporaryArtifact|FullyQualifiedName~WriteAsync_RejectsMacOsAclOnExistingArtifact" \
--logger "console;verbosity=detailed"

- name: Test smaller suites
shell: bash
run: |
Expand All @@ -68,6 +82,14 @@ jobs:
tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj
tests/CSharpDB.DevOps.Tests/CSharpDB.DevOps.Tests.csproj
tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj
tests/CSharpDB.EntityFrameworkCore.Tools.Tests/CSharpDB.EntityFrameworkCore.Tools.Tests.csproj
tests/CSharpDB.Migration.Access.Tests/CSharpDB.Migration.Access.Tests.csproj
tests/CSharpDB.Migration.Compatibility.Tests/CSharpDB.Migration.Compatibility.Tests.csproj
tests/CSharpDB.Migration.DualRun.Tests/CSharpDB.Migration.DualRun.Tests.csproj
tests/CSharpDB.Migration.Files.Tests/CSharpDB.Migration.Files.Tests.csproj
tests/CSharpDB.Migration.MySql.Tests/CSharpDB.Migration.MySql.Tests.csproj
tests/CSharpDB.Migration.SqlServer.Tests/CSharpDB.Migration.SqlServer.Tests.csproj
tests/CSharpDB.Migration.Tests/CSharpDB.Migration.Tests.csproj
tests/CSharpDB.Pipelines.Tests/CSharpDB.Pipelines.Tests.csproj
)

Expand All @@ -77,6 +99,23 @@ jobs:
echo "::endgroup::"
done

- name: Verify SQL Server migration adapter isolation
shell: pwsh
run: ./scripts/Test-SqlServerMigrationIsolation.ps1 -Configuration Release

- name: Verify MySQL migration adapter isolation
shell: pwsh
run: ./scripts/Test-MySqlMigrationIsolation.ps1 -Configuration Release

- name: Verify Microsoft Access migration adapter isolation
if: runner.os == 'Windows'
shell: pwsh
run: ./scripts/Test-AccessMigrationIsolation.ps1 -Configuration Release

- name: Verify EF Core migration analyzer package boundary
shell: pwsh
run: ./scripts/Test-EfCoreMigrationTool.ps1 -Configuration Release -NoRestore

- name: Test CSharpDB.Tests
shell: bash
run: |
Expand Down Expand Up @@ -209,6 +248,8 @@ jobs:
src/CSharpDB.Client/README.md \
src/CSharpDB.CodeModules/README.md \
src/CSharpDB.Data/README.md \
src/CSharpDB.Migration/README.md \
src/CSharpDB.Migration.DualRun/README.md \
src/CSharpDB.EntityFrameworkCore/README.md

- name: Pack projects
Expand All @@ -228,13 +269,18 @@ jobs:
dotnet pack src/CSharpDB.Client/CSharpDB.Client.csproj -c Release -o artifacts/nuget
dotnet pack src/CSharpDB.CodeModules/CSharpDB.CodeModules.csproj -c Release -o artifacts/nuget
dotnet pack src/CSharpDB.Data/CSharpDB.Data.csproj -c Release -o artifacts/nuget
dotnet pack src/CSharpDB.Migration/CSharpDB.Migration.csproj -c Release -o artifacts/nuget
dotnet pack src/CSharpDB.Migration.DualRun/CSharpDB.Migration.DualRun.csproj -c Release -o artifacts/nuget
dotnet pack src/CSharpDB.EntityFrameworkCore/CSharpDB.EntityFrameworkCore.csproj -c Release -o artifacts/nuget
dotnet pack src/CSharpDB/CSharpDB.csproj -c Release -o artifacts/nuget

- name: Qualify packed EF Core provider
shell: pwsh
run: ./scripts/Test-EfCoreNuGetPackage.ps1 -FeedPath artifacts/nuget

- name: Pack EF Core migration analyzer
run: dotnet pack src/CSharpDB.EntityFrameworkCore.Tools/CSharpDB.EntityFrameworkCore.Tools.csproj -c Release -o artifacts/nuget

- name: Upload NuGet artifacts
uses: actions/upload-artifact@v7
with:
Expand Down
116 changes: 112 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,13 @@ jobs:
with:
global-json-file: global.json

- name: Guard legacy primitives identity
shell: pwsh
run: ./scripts/Test-NoLegacyCoreReferences.ps1
- name: Use private link-free temporary directory (macOS)
if: runner.os == 'macOS'
shell: bash
run: |
temp_directory="$(mktemp -d /private/tmp/csharpdb-ci.XXXXXX)"
chmod 700 "${temp_directory}"
echo "TMPDIR=${temp_directory}" >> "${GITHUB_ENV}"

- name: Guard NuGet package dependency closure
shell: pwsh
Expand Down Expand Up @@ -64,6 +68,10 @@ jobs:
- name: Test
run: dotnet test CSharpDB.slnx -c Release --no-build --verbosity minimal

- name: Verify EF Core migration analyzer package boundary
shell: pwsh
run: ./scripts/Test-EfCoreMigrationTool.ps1 -Configuration Release -NoRestore

publish-nuget:
name: Publish NuGet
needs: build-and-test
Expand Down Expand Up @@ -122,6 +130,8 @@ jobs:
src/CSharpDB.Client/README.md \
src/CSharpDB.CodeModules/README.md \
src/CSharpDB.Data/README.md \
src/CSharpDB.Migration/README.md \
src/CSharpDB.Migration.DualRun/README.md \
src/CSharpDB.EntityFrameworkCore/README.md

- name: Pack projects
Expand All @@ -142,6 +152,8 @@ jobs:
dotnet pack src/CSharpDB.Client/CSharpDB.Client.csproj -c Release -o artifacts/nuget -p:Version="$version"
dotnet pack src/CSharpDB.CodeModules/CSharpDB.CodeModules.csproj -c Release -o artifacts/nuget -p:Version="$version"
dotnet pack src/CSharpDB.Data/CSharpDB.Data.csproj -c Release -o artifacts/nuget -p:Version="$version"
dotnet pack src/CSharpDB.Migration/CSharpDB.Migration.csproj -c Release -o artifacts/nuget -p:Version="$version"
dotnet pack src/CSharpDB.Migration.DualRun/CSharpDB.Migration.DualRun.csproj -c Release -o artifacts/nuget -p:Version="$version"
dotnet pack src/CSharpDB.EntityFrameworkCore/CSharpDB.EntityFrameworkCore.csproj -c Release -o artifacts/nuget -p:Version="$version"
dotnet pack src/CSharpDB/CSharpDB.csproj -c Release -o artifacts/nuget -p:Version="$version"

Expand All @@ -152,6 +164,16 @@ jobs:
-FeedPath artifacts/nuget `
-Version "${{ steps.version.outputs.version }}"

- name: Pack EF Core migration analyzer
run: dotnet pack src/CSharpDB.EntityFrameworkCore.Tools/CSharpDB.EntityFrameworkCore.Tools.csproj -c Release -o artifacts/nuget -p:Version="${{ steps.version.outputs.version }}"

- name: Qualify packed EF Core migration analyzer
shell: pwsh
run: |
./scripts/Test-EfCoreMigrationTool.ps1 `
-FeedPath artifacts/nuget `
-Version "${{ steps.version.outputs.version }}"

- name: NuGet login through Trusted Publishing
id: nuget-login
uses: NuGet/login@v1
Expand Down Expand Up @@ -185,7 +207,10 @@ jobs:
'CSharpDB.Client',
'CSharpDB.CodeModules',
'CSharpDB.Data',
'CSharpDB.Migration',
'CSharpDB.Migration.DualRun',
'CSharpDB.EntityFrameworkCore',
'CSharpDB.EntityFrameworkCore.Tools',
'CSharpDB'
)

Expand All @@ -196,6 +221,73 @@ jobs:
path: artifacts/nuget/*.nupkg
if-no-files-found: error

migration-archives:
name: Migration Archive (${{ matrix.rid }})
needs: build-and-test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
rid: win-x64
extension: zip
- os: ubuntu-latest
rid: linux-x64
extension: tar.gz
- os: macos-latest
rid: osx-arm64
extension: tar.gz

steps:
- name: Checkout
uses: actions/checkout@v7

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
global-json-file: global.json

- name: Publish reviewed migration archive
shell: pwsh
env:
RELEASE_TAG: ${{ github.ref_name }}
run: |
$version = $env:RELEASE_TAG -replace '^v', ''
./scripts/Publish-CSharpDbMigrationRelease.ps1 `
-Version $version `
-Runtime '${{ matrix.rid }}' `
-Configuration Release `
-OutputRoot artifacts/migration-release

- name: Verify migration archive and publisher checksum
shell: pwsh
env:
RELEASE_TAG: ${{ github.ref_name }}
run: |
$ErrorActionPreference = 'Stop'
$version = $env:RELEASE_TAG -replace '^v', ''
$archiveName = "csharpdb-migration-tool-v$version-${{ matrix.rid }}.${{ matrix.extension }}"
$archivePath = Join-Path 'artifacts/migration-release/archives' $archiveName
$checksumsPath = Join-Path 'artifacts/migration-release/archives' 'SHA256SUMS.txt'

if (-not (Test-Path -LiteralPath $archivePath -PathType Leaf)) {
throw "Expected migration archive was not created: $archivePath"
}
if (-not (Test-Path -LiteralPath $checksumsPath -PathType Leaf)) {
throw "Expected migration checksum file was not created: $checksumsPath"
}
if (-not (Select-String -LiteralPath $checksumsPath -Pattern ([regex]::Escape($archiveName)) -Quiet)) {
throw "Migration checksum file does not contain $archiveName."
}

- name: Upload migration archive
uses: actions/upload-artifact@v7
with:
name: migration-${{ matrix.rid }}
path: artifacts/migration-release/archives/csharpdb-migration-tool-v*.${{ matrix.extension }}
if-no-files-found: error

native-aot:
name: NativeAOT (${{ matrix.os }} ${{ matrix.rid }})
needs: build-and-test
Expand Down Expand Up @@ -510,7 +602,7 @@ jobs:

create-release:
name: Create GitHub Release
needs: [publish-nuget, native-aot, daemon-archives, admin-desktop-archive]
needs: [publish-nuget, migration-archives, native-aot, daemon-archives, admin-desktop-archive]
runs-on: ubuntu-latest
permissions:
contents: write
Expand All @@ -532,6 +624,13 @@ jobs:
path: artifacts/native
merge-multiple: true

- name: Download migration artifacts
uses: actions/download-artifact@v8
with:
pattern: migration-*
path: artifacts/migration
merge-multiple: true

- name: Download daemon artifacts
uses: actions/download-artifact@v8
with:
Expand All @@ -552,6 +651,13 @@ jobs:
cd artifacts/daemon
sha256sum csharpdb-daemon-v* > SHA256SUMS.txt

- name: Generate migration checksums
shell: bash
run: |
set -euo pipefail
cd artifacts/migration
sha256sum csharpdb-migration-tool-v* > MIGRATION-SHA256SUMS.txt

- name: Resolve release notes
id: notes
shell: bash
Expand Down Expand Up @@ -586,6 +692,7 @@ jobs:
files: |
artifacts/nuget/*.nupkg
artifacts/native/*
artifacts/migration/*
artifacts/daemon/*
artifacts/admin-desktop/*

Expand All @@ -598,5 +705,6 @@ jobs:
files: |
artifacts/nuget/*.nupkg
artifacts/native/*
artifacts/migration/*
artifacts/daemon/*
artifacts/admin-desktop/*
37 changes: 37 additions & 0 deletions CSharpDB.slnx
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
<Solution>
<Folder Name="/scripts/">
<File Path="scripts/Publish-CSharpDbAccessMigrationBundle.ps1" />
<File Path="scripts/Publish-CSharpDbMySqlMigrationBundle.ps1" />
<File Path="scripts/Publish-CSharpDbSqlServerMigrationBundle.ps1" />
<File Path="scripts/Publish-CSharpDbDaemonRelease.ps1" />
<File Path="scripts/Publish-CSharpDbAdminStorePackage.ps1" />
<File Path="scripts/Start-CSharpDbAdminAndDaemon.ps1" />
<File Path="scripts/Test-MySqlMigrationIsolation.ps1" />
<File Path="scripts/Test-AccessMigrationIsolation.ps1" />
<File Path="scripts/Test-SqlServerMigrationIsolation.ps1" />
</Folder>
<Folder Name="/deploy/daemon/windows/">
<File Path="deploy/daemon/windows/install-csharpdb-daemon.ps1" />
Expand Down Expand Up @@ -41,12 +47,28 @@
<Project Path="src/CSharpDB.Generators/CSharpDB.Generators.csproj" />
<Project Path="src/CSharpDB.Execution/CSharpDB.Execution.csproj" />
<Project Path="src/CSharpDB.ImportExport/CSharpDB.ImportExport.csproj" />
<Project Path="src/CSharpDB.Migration/CSharpDB.Migration.csproj" />
<Project Path="src/CSharpDB.Migration.Access/CSharpDB.Migration.Access.csproj" />
<Project Path="src/CSharpDB.Migration.Access.Worker/CSharpDB.Migration.Access.Worker.csproj" />
<Project Path="src/CSharpDB.Migration.Compatibility/CSharpDB.Migration.Compatibility.csproj" />
<Project Path="src/CSharpDB.Migration.CSharpDb.Ddl/CSharpDB.Migration.CSharpDb.Ddl.csproj" />
<Project Path="src/CSharpDB.Migration.CSharpDb/CSharpDB.Migration.CSharpDb.csproj" />
<Project Path="src/CSharpDB.Migration.DualRun/CSharpDB.Migration.DualRun.csproj" />
<Project Path="src/CSharpDB.Migration.Files/CSharpDB.Migration.Files.csproj" />
<Project Path="src/CSharpDB.Migration.LiteDb/CSharpDB.Migration.LiteDb.csproj" />
<Project Path="src/CSharpDB.Migration.Retained/CSharpDB.Migration.Retained.csproj" />
<Project Path="src/CSharpDB.Migration.MySql/CSharpDB.Migration.MySql.csproj" />
<Project Path="src/CSharpDB.Migration.MySql.Worker/CSharpDB.Migration.MySql.Worker.csproj" />
<Project Path="src/CSharpDB.Migration.SqlServer/CSharpDB.Migration.SqlServer.csproj" />
<Project Path="src/CSharpDB.Migration.SqlServer.Worker/CSharpDB.Migration.SqlServer.Worker.csproj" />
<Project Path="src/CSharpDB.Migration.Sqlite/CSharpDB.Migration.Sqlite.csproj" />
<Project Path="src/CSharpDB.Sql/CSharpDB.Sql.csproj" />
<Project Path="src/CSharpDB.Storage/CSharpDB.Storage.csproj" />
<Project Path="src/CSharpDB.Storage.Diagnostics/CSharpDB.Storage.Diagnostics.csproj" />
<Project Path="src/CSharpDB.Cli/CSharpDB.Cli.csproj" />
<Project Path="src/CSharpDB.Data/CSharpDB.Data.csproj" />
<Project Path="src/CSharpDB.EntityFrameworkCore/CSharpDB.EntityFrameworkCore.csproj" />
<Project Path="src/CSharpDB.EntityFrameworkCore.Tools/CSharpDB.EntityFrameworkCore.Tools.csproj" />
<Project Path="src/CSharpDB.Admin/CSharpDB.Admin.csproj" />
<Project Path="src/CSharpDB.Admin.Desktop/CSharpDB.Admin.Desktop.csproj" />
<Project Path="src/CSharpDB.Admin.Forms/CSharpDB.Admin.Forms.csproj" />
Expand All @@ -60,8 +82,23 @@
<Project Path="tests/CSharpDB.Pipelines.Tests/CSharpDB.Pipelines.Tests.csproj" />
<Project Path="tests/CSharpDB.Data.Tests/CSharpDB.Data.Tests.csproj" />
<Project Path="tests/CSharpDB.EntityFrameworkCore.Tests/CSharpDB.EntityFrameworkCore.Tests.csproj" />
<Project Path="tests/CSharpDB.EntityFrameworkCore.Tools.Fixtures/CSharpDB.EntityFrameworkCore.Tools.Fixtures.csproj" />
<Project Path="tests/CSharpDB.EntityFrameworkCore.Tools.Tests/CSharpDB.EntityFrameworkCore.Tools.Tests.csproj" />
<Project Path="tests/CSharpDB.Cli.Tests/CSharpDB.Cli.Tests.csproj" />
<Project Path="tests/CSharpDB.DevOps.Tests/CSharpDB.DevOps.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.CrashHarness/CSharpDB.Migration.CrashHarness.csproj" />
<Project Path="tests/CSharpDB.Migration.Tests/CSharpDB.Migration.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.Access.Tests/CSharpDB.Migration.Access.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.Compatibility.Tests/CSharpDB.Migration.Compatibility.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.DualRun.Tests/CSharpDB.Migration.DualRun.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.Files.Tests/CSharpDB.Migration.Files.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.LiteDb.Tests/CSharpDB.Migration.LiteDb.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.Retained.Tests/CSharpDB.Migration.Retained.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.MySql.Tests/CSharpDB.Migration.MySql.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.MySql.WorkerHarness/CSharpDB.Migration.MySql.WorkerHarness.csproj" />
<Project Path="tests/CSharpDB.Migration.SqlServer.Tests/CSharpDB.Migration.SqlServer.Tests.csproj" />
<Project Path="tests/CSharpDB.Migration.SqlServer.WorkerHarness/CSharpDB.Migration.SqlServer.WorkerHarness.csproj" />
<Project Path="tests/CSharpDB.Migration.Sqlite.Tests/CSharpDB.Migration.Sqlite.Tests.csproj" />
<Project Path="tests/CSharpDB.Api.Tests/CSharpDB.Api.Tests.csproj" />
<Project Path="tests/CSharpDB.Daemon.Tests/CSharpDB.Daemon.Tests.csproj" />
<Project Path="tests/CSharpDB.Admin.Forms.Tests/CSharpDB.Admin.Forms.Tests.csproj" />
Expand Down
Loading