diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml
index ae4375fe3..d17bcee6c 100644
--- a/.github/workflows/dev.yml
+++ b/.github/workflows/dev.yml
@@ -40,7 +40,7 @@ jobs:
id: dotnet
uses: actions/setup-dotnet@v4.3.1
with:
- dotnet-version: 8.0.x
+ dotnet-version: 10.0.x
# Note: Unless a concrete version is specified in the `global.json` file,
# the latest .NET version installed on the runner (including preinstalled
@@ -67,7 +67,7 @@ jobs:
- name: Prepare - Setup dotnet
uses: actions/setup-dotnet@v4.3.1
with:
- dotnet-version: 8.0.x
+ dotnet-version: 10.0.x
- name: Prepare - Setup Node
uses: actions/setup-node@v4.4.0
@@ -175,7 +175,7 @@ jobs:
- name: Prepare - Setup dotnet
uses: actions/setup-dotnet@v4.3.1
with:
- dotnet-version: 8.0.x
+ dotnet-version: 10.0.x
- name: Prepare - Setup Node
uses: actions/setup-node@v4.4.0
diff --git a/Dockerfile b/Dockerfile
index 9e9b964ae..70ba4bb20 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@
# Stage 1, Build Backend
#
-FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS backend
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0 AS backend
# FFMPEG for tests
RUN apt-get update \
@@ -79,7 +79,7 @@ RUN cp -a build /build/
#
# Stage 3, Build runtime
#
-FROM mcr.microsoft.com/dotnet/aspnet:8.0-bookworm-slim
+FROM mcr.microsoft.com/dotnet/aspnet:10.0-bookworm-slim
ARG SQUIDEX__RUNTIME__VERSION=7.0.0
diff --git a/backend/Squidex.sln b/backend/Squidex.sln
deleted file mode 100644
index 8cd4e51bb..000000000
--- a/backend/Squidex.sln
+++ /dev/null
@@ -1,321 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex", "src\Squidex\Squidex.csproj", "{61F6BBCE-A080-4400-B194-70E2F5D2096E}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "infrastructure", "infrastructure", "{8CF53B92-5EB1-461D-98F8-70DA9B603FBF}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "domain", "domain", "{4C6B06C2-6D77-4E0E-AE32-D7050236433A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Infrastructure", "src\Squidex.Infrastructure\Squidex.Infrastructure.csproj", "{BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Apps.Events", "src\Squidex.Domain.Apps.Events\Squidex.Domain.Apps.Events.csproj", "{25F66C64-058A-4D44-BC0C-F12A054F9A91}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Infrastructure.Tests", "tests\Squidex.Infrastructure.Tests\Squidex.Infrastructure.Tests.csproj", "{7FD0A92B-7862-4BB1-932B-B52A9CACB56B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Apps.Core.Tests", "tests\Squidex.Domain.Apps.Core.Tests\Squidex.Domain.Apps.Core.Tests.csproj", "{FD0AFD44-7A93-4F9E-B5ED-72582392E435}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{94207AA6-4923-4183-A558-E0F8196B8CA3}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Shared", "src\Squidex.Shared\Squidex.Shared.csproj", "{5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Users", "src\Squidex.Domain.Users\Squidex.Domain.Users.csproj", "{F7771E22-47BD-45C4-A133-FD7F1DE27CA0}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Users.Tests", "tests\Squidex.Domain.Users.Tests\Squidex.Domain.Users.Tests.csproj", "{42184546-E3CB-4D4F-9495-43979B9C63B9}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{360C300D-0F7E-439D-A437-714C959E3CAD}"
- ProjectSection(SolutionItems) = preProject
- Squidex.ruleset = Squidex.ruleset
- stylecop.json = stylecop.json
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Apps.Core.Model", "src\Squidex.Domain.Apps.Core.Model\Squidex.Domain.Apps.Core.Model.csproj", "{F0A83301-50A5-40EA-A1A2-07C7858F5A3F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Apps.Core.Operations", "src\Squidex.Domain.Apps.Core.Operations\Squidex.Domain.Apps.Core.Operations.csproj", "{6B3F75B6-5888-468E-BA4F-4FC725DAEF31}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Apps.Entities", "src\Squidex.Domain.Apps.Entities\Squidex.Domain.Apps.Entities.csproj", "{79FEF326-CA5E-4698-B2BA-C16A4580B4D5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Domain.Apps.Entities.Tests", "tests\Squidex.Domain.Apps.Entities.Tests\Squidex.Domain.Apps.Entities.Tests.csproj", "{AA003372-CD8D-4DBC-962C-F61E0C93CF05}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Web.Tests", "tests\Squidex.Web.Tests\Squidex.Web.Tests.csproj", "{7E8CC864-4C6E-496F-A672-9F9AD8874835}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "extensions", "extensions", "{FB8BC3A2-2010-4C3C-A87D-D4A98C05EE52}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Extensions", "extensions\Squidex.Extensions\Squidex.Extensions.csproj", "{F3C41B82-6A67-409A-B7FE-54543EE4F38B}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{7EDE8CF1-B1E4-4005-B154-834B944E0D7A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Web", "src\Squidex.Web\Squidex.Web.csproj", "{5B2D251F-46E3-486A-AE16-E3FE06B559ED}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Migrations", "src\Migrations\Migrations.csproj", "{23615A39-F3FB-4575-A91C-535899DFB636}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "data", "data", "{3378B841-53F8-48CC-87C1-1B30CF912BFD}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Data.MongoDb", "src\Squidex.Data.MongoDb\Squidex.Data.MongoDb.csproj", "{F754F05E-02FF-47B2-AB46-BB05C7E6B29D}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Data.Tests", "tests\Squidex.Data.Tests\Squidex.Data.Tests.csproj", "{AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Squidex.Data.EntityFramework", "src\Squidex.Data.EntityFramework\Squidex.Data.EntityFramework.csproj", "{0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Squidex.Data.Tests.CodeGenerator", "tests\Squidex.Data.Tests.CodeGenerator\Squidex.Data.Tests.CodeGenerator.csproj", "{2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Release|Any CPU.Build.0 = Release|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Release|x64.ActiveCfg = Release|Any CPU
- {61F6BBCE-A080-4400-B194-70E2F5D2096E}.Release|x86.ActiveCfg = Release|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Release|Any CPU.Build.0 = Release|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Release|x64.ActiveCfg = Release|Any CPU
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C}.Release|x86.ActiveCfg = Release|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Debug|x64.ActiveCfg = Debug|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Debug|x86.ActiveCfg = Debug|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Release|Any CPU.Build.0 = Release|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Release|x64.ActiveCfg = Release|Any CPU
- {25F66C64-058A-4D44-BC0C-F12A054F9A91}.Release|x86.ActiveCfg = Release|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Release|Any CPU.Build.0 = Release|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Release|x64.ActiveCfg = Release|Any CPU
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B}.Release|x86.ActiveCfg = Release|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Debug|x64.ActiveCfg = Debug|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Debug|x86.ActiveCfg = Debug|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Release|Any CPU.Build.0 = Release|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Release|x64.ActiveCfg = Release|Any CPU
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435}.Release|x86.ActiveCfg = Release|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Debug|x64.Build.0 = Debug|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Debug|x86.Build.0 = Debug|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Release|Any CPU.Build.0 = Release|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Release|x64.ActiveCfg = Release|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Release|x64.Build.0 = Release|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Release|x86.ActiveCfg = Release|Any CPU
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F}.Release|x86.Build.0 = Release|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Debug|x64.ActiveCfg = Debug|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Debug|x64.Build.0 = Debug|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Debug|x86.Build.0 = Debug|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Release|Any CPU.Build.0 = Release|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Release|x64.ActiveCfg = Release|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Release|x64.Build.0 = Release|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Release|x86.ActiveCfg = Release|Any CPU
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0}.Release|x86.Build.0 = Release|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Debug|x64.ActiveCfg = Debug|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Debug|x64.Build.0 = Debug|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Debug|x86.ActiveCfg = Debug|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Debug|x86.Build.0 = Debug|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Release|Any CPU.Build.0 = Release|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Release|x64.ActiveCfg = Release|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Release|x64.Build.0 = Release|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Release|x86.ActiveCfg = Release|Any CPU
- {42184546-E3CB-4D4F-9495-43979B9C63B9}.Release|x86.Build.0 = Release|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Debug|x64.Build.0 = Debug|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Debug|x86.Build.0 = Debug|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Release|Any CPU.Build.0 = Release|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Release|x64.ActiveCfg = Release|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Release|x64.Build.0 = Release|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Release|x86.ActiveCfg = Release|Any CPU
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F}.Release|x86.Build.0 = Release|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Debug|x64.Build.0 = Debug|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Debug|x86.Build.0 = Debug|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Release|Any CPU.Build.0 = Release|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Release|x64.ActiveCfg = Release|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Release|x64.Build.0 = Release|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Release|x86.ActiveCfg = Release|Any CPU
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31}.Release|x86.Build.0 = Release|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Debug|x64.Build.0 = Debug|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Debug|x86.ActiveCfg = Debug|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Debug|x86.Build.0 = Debug|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Release|Any CPU.Build.0 = Release|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Release|x64.ActiveCfg = Release|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Release|x64.Build.0 = Release|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Release|x86.ActiveCfg = Release|Any CPU
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5}.Release|x86.Build.0 = Release|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Debug|x64.Build.0 = Debug|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Debug|x86.ActiveCfg = Debug|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Debug|x86.Build.0 = Debug|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Release|Any CPU.Build.0 = Release|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Release|x64.ActiveCfg = Release|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Release|x64.Build.0 = Release|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Release|x86.ActiveCfg = Release|Any CPU
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05}.Release|x86.Build.0 = Release|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Debug|x64.ActiveCfg = Debug|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Debug|x64.Build.0 = Debug|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Debug|x86.ActiveCfg = Debug|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Debug|x86.Build.0 = Debug|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Release|Any CPU.Build.0 = Release|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Release|x64.ActiveCfg = Release|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Release|x64.Build.0 = Release|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Release|x86.ActiveCfg = Release|Any CPU
- {7E8CC864-4C6E-496F-A672-9F9AD8874835}.Release|x86.Build.0 = Release|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Debug|x64.Build.0 = Debug|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Debug|x86.Build.0 = Debug|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Release|Any CPU.Build.0 = Release|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Release|x64.ActiveCfg = Release|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Release|x64.Build.0 = Release|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Release|x86.ActiveCfg = Release|Any CPU
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B}.Release|x86.Build.0 = Release|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Debug|x64.Build.0 = Debug|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Debug|x86.Build.0 = Debug|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Release|Any CPU.Build.0 = Release|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Release|x64.ActiveCfg = Release|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Release|x64.Build.0 = Release|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Release|x86.ActiveCfg = Release|Any CPU
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED}.Release|x86.Build.0 = Release|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Debug|x64.ActiveCfg = Debug|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Debug|x64.Build.0 = Debug|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Debug|x86.ActiveCfg = Debug|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Debug|x86.Build.0 = Debug|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Release|Any CPU.Build.0 = Release|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Release|x64.ActiveCfg = Release|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Release|x64.Build.0 = Release|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Release|x86.ActiveCfg = Release|Any CPU
- {23615A39-F3FB-4575-A91C-535899DFB636}.Release|x86.Build.0 = Release|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Debug|x64.Build.0 = Debug|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Debug|x86.Build.0 = Debug|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Release|Any CPU.Build.0 = Release|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Release|x64.ActiveCfg = Release|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Release|x64.Build.0 = Release|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Release|x86.ActiveCfg = Release|Any CPU
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D}.Release|x86.Build.0 = Release|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Debug|x64.Build.0 = Debug|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Debug|x86.ActiveCfg = Debug|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Debug|x86.Build.0 = Debug|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Release|Any CPU.Build.0 = Release|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Release|x64.ActiveCfg = Release|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Release|x64.Build.0 = Release|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Release|x86.ActiveCfg = Release|Any CPU
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD}.Release|x86.Build.0 = Release|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Debug|x64.Build.0 = Debug|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Debug|x86.ActiveCfg = Debug|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Debug|x86.Build.0 = Debug|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Release|Any CPU.Build.0 = Release|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Release|x64.ActiveCfg = Release|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Release|x64.Build.0 = Release|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Release|x86.ActiveCfg = Release|Any CPU
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA}.Release|x86.Build.0 = Release|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Debug|x64.Build.0 = Debug|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Debug|x86.Build.0 = Debug|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Release|Any CPU.Build.0 = Release|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Release|x64.ActiveCfg = Release|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Release|x64.Build.0 = Release|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Release|x86.ActiveCfg = Release|Any CPU
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {BD1C30A8-8FFA-4A92-A9BD-B67B1CDDD84C} = {8CF53B92-5EB1-461D-98F8-70DA9B603FBF}
- {25F66C64-058A-4D44-BC0C-F12A054F9A91} = {4C6B06C2-6D77-4E0E-AE32-D7050236433A}
- {7FD0A92B-7862-4BB1-932B-B52A9CACB56B} = {8CF53B92-5EB1-461D-98F8-70DA9B603FBF}
- {FD0AFD44-7A93-4F9E-B5ED-72582392E435} = {4C6B06C2-6D77-4E0E-AE32-D7050236433A}
- {5E75AB7D-6F01-4313-AFF1-7F7128FFD71F} = {7EDE8CF1-B1E4-4005-B154-834B944E0D7A}
- {F7771E22-47BD-45C4-A133-FD7F1DE27CA0} = {7EDE8CF1-B1E4-4005-B154-834B944E0D7A}
- {42184546-E3CB-4D4F-9495-43979B9C63B9} = {7EDE8CF1-B1E4-4005-B154-834B944E0D7A}
- {F0A83301-50A5-40EA-A1A2-07C7858F5A3F} = {4C6B06C2-6D77-4E0E-AE32-D7050236433A}
- {6B3F75B6-5888-468E-BA4F-4FC725DAEF31} = {4C6B06C2-6D77-4E0E-AE32-D7050236433A}
- {79FEF326-CA5E-4698-B2BA-C16A4580B4D5} = {4C6B06C2-6D77-4E0E-AE32-D7050236433A}
- {AA003372-CD8D-4DBC-962C-F61E0C93CF05} = {4C6B06C2-6D77-4E0E-AE32-D7050236433A}
- {7E8CC864-4C6E-496F-A672-9F9AD8874835} = {7EDE8CF1-B1E4-4005-B154-834B944E0D7A}
- {F3C41B82-6A67-409A-B7FE-54543EE4F38B} = {FB8BC3A2-2010-4C3C-A87D-D4A98C05EE52}
- {5B2D251F-46E3-486A-AE16-E3FE06B559ED} = {7EDE8CF1-B1E4-4005-B154-834B944E0D7A}
- {23615A39-F3FB-4575-A91C-535899DFB636} = {94207AA6-4923-4183-A558-E0F8196B8CA3}
- {F754F05E-02FF-47B2-AB46-BB05C7E6B29D} = {3378B841-53F8-48CC-87C1-1B30CF912BFD}
- {AA2F3C32-E3C8-4DF3-A365-F25C7EC19BCD} = {3378B841-53F8-48CC-87C1-1B30CF912BFD}
- {0348CFDA-4DA1-4DB5-9C6F-0D234FE3E4DA} = {3378B841-53F8-48CC-87C1-1B30CF912BFD}
- {2E4CC21D-3AB9-4B8C-A13E-348AA3E2F328} = {3378B841-53F8-48CC-87C1-1B30CF912BFD}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {02F2E872-3141-44F5-BD6A-33CD84E9FE08}
- EndGlobalSection
-EndGlobal
diff --git a/backend/Squidex.slnx b/backend/Squidex.slnx
new file mode 100644
index 000000000..6b6d7673f
--- /dev/null
+++ b/backend/Squidex.slnx
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/extensions/Squidex.Extensions/APM/Zipkin/ZipkinPlugin.cs b/backend/extensions/Squidex.Extensions/APM/Zipkin/ZipkinPlugin.cs
deleted file mode 100644
index a63fce9d4..000000000
--- a/backend/extensions/Squidex.Extensions/APM/Zipkin/ZipkinPlugin.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-// ==========================================================================
-// Squidex Headless CMS
-// ==========================================================================
-// Copyright (c) Squidex UG (haftungsbeschraenkt)
-// All rights reserved. Licensed under the MIT license.
-// ==========================================================================
-
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using OpenTelemetry.Trace;
-using Squidex.Infrastructure;
-using Squidex.Infrastructure.Plugins;
-
-namespace Squidex.Extensions.APM.Zipkin;
-
-public sealed class ZipkinPlugin : IPlugin
-{
- private sealed class Configurator(IConfiguration config) : ITelemetryConfigurator
- {
- public void Configure(TracerProviderBuilder builder)
- {
- builder.AddZipkinExporter(options =>
- {
- config.GetSection("logging:zipkin").Bind(options);
- });
- }
- }
-
- public void ConfigureServices(IServiceCollection services, IConfiguration config)
- {
- if (config.GetValue("logging:zipkin:enabled"))
- {
- services.AddSingleton();
- }
- }
-}
diff --git a/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj b/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj
index e97a17f66..8509df10e 100644
--- a/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj
+++ b/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
enable
@@ -11,34 +11,35 @@
-
-
+
+
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
diff --git a/backend/global.json b/backend/global.json
deleted file mode 100644
index 3d946171e..000000000
--- a/backend/global.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "sdk": {
- "version": "8.0.416"
- }
-}
\ No newline at end of file
diff --git a/backend/i18n/translator/Squidex.Translator/Squidex.Translator.csproj b/backend/i18n/translator/Squidex.Translator/Squidex.Translator.csproj
index 43902a781..33959f846 100644
--- a/backend/i18n/translator/Squidex.Translator/Squidex.Translator.csproj
+++ b/backend/i18n/translator/Squidex.Translator/Squidex.Translator.csproj
@@ -2,7 +2,7 @@
Exe
- net8.0
+ net10.0
latest
enable
NU1608
diff --git a/backend/src/Migrations/Migrations.csproj b/backend/src/Migrations/Migrations.csproj
index c7811d56b..60f652d6f 100644
--- a/backend/src/Migrations/Migrations.csproj
+++ b/backend/src/Migrations/Migrations.csproj
@@ -1,16 +1,16 @@
- net8.0
+ net10.0
latest
enable
enable
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Apps/EFAppRepository.cs b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Apps/EFAppRepository.cs
index 63b645c49..a2d7415e0 100644
--- a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Apps/EFAppRepository.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Apps/EFAppRepository.cs
@@ -5,7 +5,6 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
-using System.Linq.Expressions;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query;
using Squidex.Domain.Apps.Core.Apps;
@@ -101,7 +100,7 @@ public sealed class EFAppRepository(IDbContextFactory dbCont
return byName.Values.ToList();
}
- protected override Expression, SetPropertyCalls>> BuildUpdate(EFAppEntity entity)
+ protected override Action> BuildUpdate(EFAppEntity entity)
{
return u => u
.SetProperty(x => x.Document, entity.Document)
diff --git a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetFolderRepository_SnapshotStore.cs b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetFolderRepository_SnapshotStore.cs
index e4497d621..081e1d6c9 100644
--- a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetFolderRepository_SnapshotStore.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetFolderRepository_SnapshotStore.cs
@@ -113,7 +113,7 @@ public sealed partial class EFAssetFolderRepository : ISnapshotStore, SetPropertyCalls>> BuildUpdate(EFAssetFolderEntity entity)
+ private static Action> BuildUpdate(EFAssetFolderEntity entity)
{
return b => b
.SetProperty(x => x.AppId, entity.AppId)
diff --git a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetRepository_SnapshotStore.cs b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetRepository_SnapshotStore.cs
index a4f8bf644..8cfb3a954 100644
--- a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetRepository_SnapshotStore.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Assets/EFAssetRepository_SnapshotStore.cs
@@ -108,7 +108,7 @@ public sealed partial class EFAssetRepository : ISnapshotStore,
}
}
- private static Expression, SetPropertyCalls>> BuildUpdate(EFAssetEntity entity)
+ private static Action> BuildUpdate(EFAssetEntity entity)
{
return b => b
.SetProperty(x => x.AppId, entity.AppId)
diff --git a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Contents/Extensions.cs b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Contents/Extensions.cs
index 81eecb311..8d55f9a28 100644
--- a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Contents/Extensions.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Contents/Extensions.cs
@@ -54,7 +54,7 @@ internal static class Extensions
}
}
- public static Expression, SetPropertyCalls>> BuildUpdate(T entity) where T : EFContentEntity
+ public static Action> BuildUpdate(T entity) where T : EFContentEntity
{
return b => b
.SetProperty(x => x.AppId, entity.AppId)
diff --git a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Schemas/EFSchemaRepository.cs b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Schemas/EFSchemaRepository.cs
index 5816f2ebf..91d5d6384 100644
--- a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Schemas/EFSchemaRepository.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Schemas/EFSchemaRepository.cs
@@ -106,7 +106,7 @@ public sealed class EFSchemaRepository(IDbContextFactory dbC
}
}
- protected override Expression, SetPropertyCalls>> BuildUpdate(EFSchemaEntity entity)
+ protected override Action> BuildUpdate(EFSchemaEntity entity)
{
return u => u
.SetProperty(x => x.Document, entity.Document)
diff --git a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Teams/EFTeamRepository.cs b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Teams/EFTeamRepository.cs
index b81ec97ff..7a375a814 100644
--- a/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Teams/EFTeamRepository.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Domain/Apps/Entities/Teams/EFTeamRepository.cs
@@ -70,7 +70,7 @@ public sealed class EFTeamRepository(IDbContextFactory dbCon
}
}
- protected override Expression, SetPropertyCalls>> BuildUpdate(EFTeamEntity entity)
+ protected override Action> BuildUpdate(EFTeamEntity entity)
{
return u => u
.SetProperty(x => x.Document, entity.Document)
diff --git a/backend/src/Squidex.Data.EntityFramework/Infrastructure/BulkInserter.cs b/backend/src/Squidex.Data.EntityFramework/Infrastructure/BulkInserter.cs
index c8955a71e..826616ff0 100644
--- a/backend/src/Squidex.Data.EntityFramework/Infrastructure/BulkInserter.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Infrastructure/BulkInserter.cs
@@ -24,6 +24,6 @@ public sealed class BulkInserter : IDbFlowsBulkInserter, IDbEventStoreBulkInsert
public Task BulkUpsertAsync(DbContext dbContext, IEnumerable entities,
CancellationToken ct = default) where T : class
{
- return dbContext.ExecuteBulkInsertAsync(entities, o => { }, new OnConflictOptions { Update = e => e }, ct);
+ return dbContext.ExecuteBulkInsertAsync(entities, o => { }, new OnConflictOptions { Update = (lhs, rhs) => lhs }, ct);
}
}
diff --git a/backend/src/Squidex.Data.EntityFramework/Infrastructure/Extensions.cs b/backend/src/Squidex.Data.EntityFramework/Infrastructure/Extensions.cs
index b21a9dfba..dd48c19b6 100644
--- a/backend/src/Squidex.Data.EntityFramework/Infrastructure/Extensions.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Infrastructure/Extensions.cs
@@ -93,7 +93,7 @@ public static class Extensions
return Task.CompletedTask;
}
- return dbContext.ExecuteBulkInsertAsync(source, o => { }, new OnConflictOptions { Update = e => e }, ct);
+ return dbContext.ExecuteBulkInsertAsync(source, o => { }, new OnConflictOptions { Update = (lhs, rhs) => lhs }, ct);
}
public static Task BulkInsertAsync(this DbContext dbContext, List source,
@@ -173,7 +173,7 @@ public static class Extensions
}
public static async Task UpsertAsync(this DbContext dbContext, T entity, long oldVersion,
- Func, SetPropertyCalls>>> update,
+ Func>> update,
CancellationToken ct) where T : class, IVersionedEntity
{
var dbSet = dbContext.Set();
diff --git a/backend/src/Squidex.Data.EntityFramework/Infrastructure/States/EFSnapshotStore.cs b/backend/src/Squidex.Data.EntityFramework/Infrastructure/States/EFSnapshotStore.cs
index 3e74d3867..704f03ed8 100644
--- a/backend/src/Squidex.Data.EntityFramework/Infrastructure/States/EFSnapshotStore.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Infrastructure/States/EFSnapshotStore.cs
@@ -114,7 +114,7 @@ public class EFSnapshotStore(IDbContextFactory db
return dbContextFactory.CreateDbContextAsync(ct);
}
- protected virtual Expression, SetPropertyCalls>> BuildUpdate(TState entity)
+ protected virtual Action> BuildUpdate(TState entity)
{
return u => u
.SetProperty(x => x.Document, entity.Document)
diff --git a/backend/src/Squidex.Data.EntityFramework/Providers/MySql/Content/JsonFunction.cs b/backend/src/Squidex.Data.EntityFramework/Providers/MySql/Content/JsonFunction.cs
deleted file mode 100644
index dbaf01ef4..000000000
--- a/backend/src/Squidex.Data.EntityFramework/Providers/MySql/Content/JsonFunction.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-namespace Squidex.Providers.MySql.Content;
-
-public static class JsonFunction
-{
-}
diff --git a/backend/src/Squidex.Data.EntityFramework/Providers/MySql/JsonFunction.cs b/backend/src/Squidex.Data.EntityFramework/Providers/MySql/JsonFunction.cs
index 69f763db6..425d78703 100644
--- a/backend/src/Squidex.Data.EntityFramework/Providers/MySql/JsonFunction.cs
+++ b/backend/src/Squidex.Data.EntityFramework/Providers/MySql/JsonFunction.cs
@@ -18,7 +18,7 @@ public static class JsonFunction
private const int TypeBoolean = 3;
private const int TypeNumber = 4;
- private static readonly Dictionary<(int Type, CompareOperator Operator), string> Functions = new()
+ private static readonly Dictionary<(int Type, CompareOperator Operator), string> Functions = new ()
{
[(TypeAny, CompareOperator.Empty)] = "json_empty",
[(TypeAny, CompareOperator.Exists)] = "json_exists",
diff --git a/backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj b/backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj
index 0945d8303..fabb4acd4 100644
--- a/backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj
+++ b/backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
Squidex
latest
enable
@@ -19,41 +19,41 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/backend/src/Squidex.Data.MongoDb/Domain/Apps/Entities/Contents/Text/AtlasTextIndex.cs b/backend/src/Squidex.Data.MongoDb/Domain/Apps/Entities/Contents/Text/AtlasTextIndex.cs
index 36344e377..d62a4e641 100644
--- a/backend/src/Squidex.Data.MongoDb/Domain/Apps/Entities/Contents/Text/AtlasTextIndex.cs
+++ b/backend/src/Squidex.Data.MongoDb/Domain/Apps/Entities/Contents/Text/AtlasTextIndex.cs
@@ -25,7 +25,7 @@ public sealed class AtlasTextIndex(IMongoDatabase database, IHttpClientFactory a
private static readonly LuceneQueryVisitor QueryVisitor = new LuceneQueryVisitor(AtlasIndexDefinition.GetFieldPath);
private static readonly LuceneQueryAnalyzer QueryParser =
new LuceneQueryAnalyzer(LuceneVersion.LUCENE_48, "*",
- new StandardAnalyzer(LuceneVersion.LUCENE_48, CharArraySet.EMPTY_SET));
+ new StandardAnalyzer(LuceneVersion.LUCENE_48, CharArraySet.Empty));
private readonly AtlasOptions atlasOptions = atlasOptions.Value;
private string index;
diff --git a/backend/src/Squidex.Data.MongoDb/Infrastructure/BsonDomainIdSerializer.cs b/backend/src/Squidex.Data.MongoDb/Infrastructure/BsonDomainIdSerializer.cs
index 63892db39..e2eaa1b0c 100644
--- a/backend/src/Squidex.Data.MongoDb/Infrastructure/BsonDomainIdSerializer.cs
+++ b/backend/src/Squidex.Data.MongoDb/Infrastructure/BsonDomainIdSerializer.cs
@@ -68,16 +68,7 @@ public sealed class BsonDomainIdSerializer : SerializerBase, IBsonPoly
case BsonType.Binary:
if (Guid.TryParse(value.ToString(), out var guid))
{
-#pragma warning disable CS0618 // Type or member is obsolete
- if (context.Writer.Settings.GuidRepresentation == GuidRepresentation.CSharpLegacy)
- {
- context.Writer.WriteBinaryData(new BsonBinaryData(guid.ToByteArray(), BsonBinarySubType.UuidLegacy, GuidRepresentation.CSharpLegacy));
- }
- else
- {
- context.Writer.WriteBinaryData(new BsonBinaryData(guid, GuidRepresentation.Standard));
- }
-#pragma warning restore CS0618 // Type or member is obsolete
+ context.Writer.WriteBinaryData(new BsonBinaryData(guid, GuidRepresentation.Standard));
}
else
{
diff --git a/backend/src/Squidex.Data.MongoDb/Infrastructure/MongoClientFactory.cs b/backend/src/Squidex.Data.MongoDb/Infrastructure/MongoClientFactory.cs
index d3ddc1817..24e7e5c4f 100644
--- a/backend/src/Squidex.Data.MongoDb/Infrastructure/MongoClientFactory.cs
+++ b/backend/src/Squidex.Data.MongoDb/Infrastructure/MongoClientFactory.cs
@@ -6,7 +6,6 @@
// ==========================================================================
using MongoDB.Driver;
-using MongoDB.Driver.Linq;
using Squidex.Infrastructure.Json.Objects;
namespace Squidex.Infrastructure;
@@ -24,11 +23,6 @@ public static class MongoClientFactory
var clientSettings = MongoClientSettings.FromConnectionString(connectionString);
- // The current version of the linq provider has some issues with base classes.
-#pragma warning disable CS0618 // Type or member is obsolete
- clientSettings.LinqProvider = LinqProvider.V2;
-#pragma warning restore CS0618 // Type or member is obsolete
-
// If we really need custom config.
configure?.Invoke(clientSettings);
diff --git a/backend/src/Squidex.Data.MongoDb/ServiceExtensions.cs b/backend/src/Squidex.Data.MongoDb/ServiceExtensions.cs
index e41e89e89..95a97eebf 100644
--- a/backend/src/Squidex.Data.MongoDb/ServiceExtensions.cs
+++ b/backend/src/Squidex.Data.MongoDb/ServiceExtensions.cs
@@ -300,7 +300,7 @@ public static class ServiceExtensions
{
if (!string.IsNullOrWhiteSpace(mongoCertificate))
{
- var certFile = new X509Certificate2(mongoCertificate);
+ var certFile = X509CertificateLoader.LoadCertificateFromFile(mongoCertificate);
settings.SslSettings = new SslSettings
{
diff --git a/backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj b/backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj
index e9a848d19..f7b00de2c 100644
--- a/backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj
+++ b/backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
Squidex
latest
enable
@@ -16,25 +16,24 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj b/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
index 849260ad2..065b99192 100644
--- a/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
+++ b/backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
Squidex.Domain.Apps.Core
latest
enable
@@ -12,17 +12,16 @@
True
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+
-
diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonTypeVisitor.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonTypeVisitor.cs
index aedbb2640..be9c9f865 100644
--- a/backend/src/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonTypeVisitor.cs
+++ b/backend/src/Squidex.Domain.Apps.Core.Operations/GenerateJsonSchema/JsonTypeVisitor.cs
@@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
+using System.Globalization;
using NJsonSchema;
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Domain.Apps.Core.Schemas;
@@ -140,7 +141,7 @@ internal sealed class JsonTypeVisitor : IFieldVisitor AssetContentUrl(FluidValue input, FilterArguments arguments, TemplateContext context)
@@ -70,7 +70,7 @@ public sealed class EventFluidExtensions(IUrlGenerator urlGenerator) : IFluidExt
return new StringValue(result);
}
- return NilValue.Empty;
+ return EmptyValue.Instance;
}
var value = input.ToObjectValue();
@@ -91,7 +91,7 @@ public sealed class EventFluidExtensions(IUrlGenerator urlGenerator) : IFluidExt
}
}
- return NilValue.Empty;
+ return EmptyValue.Instance;
}
private ValueTask AssetContentSlugUrl(FluidValue input, FilterArguments arguments, TemplateContext context)
@@ -105,7 +105,7 @@ public sealed class EventFluidExtensions(IUrlGenerator urlGenerator) : IFluidExt
return new StringValue(result);
}
- return NilValue.Empty;
+ return EmptyValue.Instance;
}
var value = input.ToObjectValue();
@@ -123,6 +123,6 @@ public sealed class EventFluidExtensions(IUrlGenerator urlGenerator) : IFluidExt
}
}
- return NilValue.Empty;
+ return EmptyValue.Instance;
}
}
diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj b/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
index c66cac5ae..2614a2c1d 100644
--- a/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
+++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
Squidex.Domain.Apps.Core
latest
enable
@@ -18,22 +18,21 @@
-
+
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
-
+
+
-
-
+
diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Templates/Extensions/JsonArrayFluidValue.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Templates/Extensions/JsonArrayFluidValue.cs
index 1b8511cd1..184e7ce53 100644
--- a/backend/src/Squidex.Domain.Apps.Core.Operations/Templates/Extensions/JsonArrayFluidValue.cs
+++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Templates/Extensions/JsonArrayFluidValue.cs
@@ -44,7 +44,7 @@ public sealed class JsonArrayFluidValue(JsonArray value, TemplateOptions options
return value.ToString()!;
}
- protected override FluidValue GetValue(string name, TemplateContext context)
+ public override ValueTask GetValueAsync(string name, TemplateContext context)
{
switch (name)
{
@@ -71,7 +71,7 @@ public sealed class JsonArrayFluidValue(JsonArray value, TemplateOptions options
return NilValue.Instance;
}
- protected override FluidValue GetIndex(FluidValue index, TemplateContext context)
+ public override ValueTask GetIndexAsync(FluidValue index, TemplateContext context)
{
var i = (int)index.ToNumberValue();
diff --git a/backend/src/Squidex.Domain.Apps.Entities/Apps/DefaultAppLogStore.cs b/backend/src/Squidex.Domain.Apps.Entities/Apps/DefaultAppLogStore.cs
index bfc27b256..9fa612502 100644
--- a/backend/src/Squidex.Domain.Apps.Entities/Apps/DefaultAppLogStore.cs
+++ b/backend/src/Squidex.Domain.Apps.Entities/Apps/DefaultAppLogStore.cs
@@ -103,7 +103,7 @@ public sealed class DefaultAppLogStore(IRequestLogStore requestLogStore) : IAppL
await foreach (var request in requestLogStore.QueryAllAsync(appId.ToString(), fromTime, toTime, ct))
{
- csv.WriteField(request.Timestamp.ToString());
+ csv.WriteField(request.Timestamp.ToString("g", CultureInfo.InvariantCulture));
csv.WriteField(GetString(request, FieldRequestPath));
csv.WriteField(GetString(request, FieldRequestMethod));
csv.WriteField(GetDouble(request, FieldRequestElapsedMs));
diff --git a/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj b/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
index 7b781b489..f62f35bcc 100644
--- a/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
+++ b/backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
en
@@ -28,27 +28,26 @@
-
-
-
-
-
-
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
@@ -66,4 +65,7 @@
Resources.Designer.cs
+
+
+
diff --git a/backend/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj b/backend/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj
index 36acb612e..674ef8b48 100644
--- a/backend/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj
+++ b/backend/src/Squidex.Domain.Apps.Events/Squidex.Domain.Apps.Events.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
enable
@@ -14,11 +14,11 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj b/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
index 74447d7e0..f874c888c 100644
--- a/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
+++ b/backend/src/Squidex.Domain.Users/Squidex.Domain.Users.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
enable
@@ -18,18 +18,14 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
-
-
diff --git a/backend/src/Squidex.Infrastructure/CollectionExtensions.cs b/backend/src/Squidex.Infrastructure/CollectionExtensions.cs
index ec2249fb8..56556bada 100644
--- a/backend/src/Squidex.Infrastructure/CollectionExtensions.cs
+++ b/backend/src/Squidex.Infrastructure/CollectionExtensions.cs
@@ -195,11 +195,6 @@ public static class CollectionExtensions
}
}
- public static IEnumerable Shuffle(this IEnumerable enumerable)
- {
- return enumerable.OrderBy(x => Random.Shared.Next()).ToList();
- }
-
public static IEnumerable OrEmpty(this IEnumerable? source)
{
return source ?? [];
diff --git a/backend/src/Squidex.Infrastructure/DisposableObjectBase.cs b/backend/src/Squidex.Infrastructure/DisposableObjectBase.cs
index 20db1fa45..a84982115 100644
--- a/backend/src/Squidex.Infrastructure/DisposableObjectBase.cs
+++ b/backend/src/Squidex.Infrastructure/DisposableObjectBase.cs
@@ -9,7 +9,7 @@ namespace Squidex.Infrastructure;
public abstract class DisposableObjectBase : IDisposable
{
- private readonly object disposeLock = new object();
+ private readonly Lock disposeLock = new Lock();
private bool isDisposed;
public bool IsDisposed => isDisposed;
diff --git a/backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeExtensions.cs b/backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeExtensions.cs
index a6d12ed64..a3354403d 100644
--- a/backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeExtensions.cs
+++ b/backend/src/Squidex.Infrastructure/EventSourcing/EnvelopeExtensions.cs
@@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
+using System.Globalization;
using NodaTime;
using NodaTime.Text;
using Squidex.Events;
@@ -80,7 +81,7 @@ public static class EnvelopeExtensions
public static Envelope SetTimestamp(this Envelope envelope, Instant value) where T : class, IEvent
{
- envelope.Headers[CommonHeaders.Timestamp] = value.ToString();
+ envelope.Headers[CommonHeaders.Timestamp] = value.ToString("g", CultureInfo.InvariantCulture);
return envelope;
}
diff --git a/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs b/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs
index aaaac9541..1a3f966ba 100644
--- a/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs
+++ b/backend/src/Squidex.Infrastructure/Json/Objects/JsonValue.cs
@@ -275,7 +275,7 @@ public readonly struct JsonValue : IEquatable
public static JsonValue Create(Instant value)
{
- return new JsonValue(value.ToString());
+ return new JsonValue(value.ToString("g", CultureInfo.InvariantCulture));
}
public static JsonValue Create(double value)
diff --git a/backend/src/Squidex.Infrastructure/Queries/OData/ConstantWithTypeVisitor.cs b/backend/src/Squidex.Infrastructure/Queries/OData/ConstantWithTypeVisitor.cs
index 9504d80f7..35014d86f 100644
--- a/backend/src/Squidex.Infrastructure/Queries/OData/ConstantWithTypeVisitor.cs
+++ b/backend/src/Squidex.Infrastructure/Queries/OData/ConstantWithTypeVisitor.cs
@@ -186,7 +186,7 @@ public sealed class ConstantWithTypeVisitor : QueryNodeVisitor
return Instant.FromDateTimeUtc(DateTime.SpecifyKind(dateTime, DateTimeKind.Utc));
}
- if (value is Date date)
+ if (value is DateOnly date)
{
return Instant.FromUtc(date.Year, date.Month, date.Day, 0, 0);
}
diff --git a/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
index d1e5920be..1790ca4ce 100644
--- a/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
+++ b/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
en
@@ -11,33 +11,31 @@
True
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
-
diff --git a/backend/src/Squidex.Shared/Squidex.Shared.csproj b/backend/src/Squidex.Shared/Squidex.Shared.csproj
index b115c620b..5666f79d4 100644
--- a/backend/src/Squidex.Shared/Squidex.Shared.csproj
+++ b/backend/src/Squidex.Shared/Squidex.Shared.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
enable
@@ -10,13 +10,12 @@
True
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
diff --git a/backend/src/Squidex.Web/Pipeline/ActionContextLogAppender.cs b/backend/src/Squidex.Web/Pipeline/ActionContextLogAppender.cs
index a81db3156..16615f86e 100644
--- a/backend/src/Squidex.Web/Pipeline/ActionContextLogAppender.cs
+++ b/backend/src/Squidex.Web/Pipeline/ActionContextLogAppender.cs
@@ -7,12 +7,12 @@
using System.Diagnostics;
using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc.Infrastructure;
+using Microsoft.AspNetCore.Mvc.Abstractions;
using Squidex.Log;
namespace Squidex.Web.Pipeline;
-public sealed class ActionContextLogAppender(IHttpContextAccessor httpContextAccessor, IActionContextAccessor actionContextAccessor) : ILogAppender
+public sealed class ActionContextLogAppender(IHttpContextAccessor httpContextAccessor) : ILogAppender
{
public void Append(IObjectWriter writer, SemanticLogLevel logLevel, Exception? exception)
{
@@ -23,8 +23,7 @@ public sealed class ActionContextLogAppender(IHttpContextAccessor httpContextAcc
return;
}
- var actionContext = actionContextAccessor.ActionContext;
-
+ var actionDescriptor = httpContext.GetEndpoint()?.Metadata.GetMetadata();
try
{
if (string.IsNullOrEmpty(httpContext?.Request?.Method))
@@ -34,7 +33,7 @@ public sealed class ActionContextLogAppender(IHttpContextAccessor httpContextAcc
var requestId = GetRequestId(httpContext);
- var logContext = (requestId, context: httpContext, actionContext);
+ var logContext = (requestId, context: httpContext, actionDescriptor);
writer.WriteObject("web", logContext, (ctx, w) =>
{
@@ -42,11 +41,9 @@ public sealed class ActionContextLogAppender(IHttpContextAccessor httpContextAcc
w.WriteProperty("requestPath", ctx.context.Request.Path);
w.WriteProperty("requestMethod", ctx.context.Request.Method);
- var actionContext = ctx.actionContext;
-
- if (actionContext != null)
+ if (ctx.actionDescriptor != null)
{
- w.WriteObject("routeValues", actionContext.ActionDescriptor.RouteValues, (routeValues, r) =>
+ w.WriteObject("routeValues", ctx.actionDescriptor.RouteValues, (routeValues, r) =>
{
foreach (var (key, value) in routeValues)
{
diff --git a/backend/src/Squidex.Web/Squidex.Web.csproj b/backend/src/Squidex.Web/Squidex.Web.csproj
index 0953879a5..61fec7ff5 100644
--- a/backend/src/Squidex.Web/Squidex.Web.csproj
+++ b/backend/src/Squidex.Web/Squidex.Web.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
enable
@@ -13,14 +13,14 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationExtensions.cs b/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationExtensions.cs
index f6694eda5..a695f5edb 100644
--- a/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationExtensions.cs
+++ b/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationExtensions.cs
@@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
+using System.Collections.Immutable;
using System.Security.Claims;
using System.Text.Json;
using OpenIddict.Abstractions;
@@ -34,21 +35,26 @@ public static class ApplicationExtensions
return application;
}
- private static JsonElement CreateParameter(IEnumerable values)
+ private static JsonElement CreateParameter(IEnumerable values)
{
- return (JsonElement)new OpenIddictParameter(values.ToArray());
+ return (JsonElement)new OpenIddictParameter(values.ToImmutableArray());
}
public static IEnumerable Claims(this IReadOnlyDictionary properties)
{
foreach (var (key, value) in properties)
{
- var values = (string[]?)new OpenIddictParameter(value);
+ var values = (ImmutableArray?)new OpenIddictParameter(value);
if (values != null)
{
foreach (var claimValue in values)
{
+ if (claimValue == null)
+ {
+ continue;
+ }
+
if (key == SquidexClaimTypes.DisplayName)
{
yield return new Claim(OpenIdClaims.Name, claimValue);
diff --git a/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationManager.cs b/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationManager.cs
index 30ee4c09f..95c904766 100644
--- a/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationManager.cs
+++ b/backend/src/Squidex/Areas/IdentityServer/Config/ApplicationManager.cs
@@ -12,11 +12,11 @@ using OpenIddict.Core;
namespace Squidex.Areas.IdentityServer.Config;
public sealed class ApplicationManager(
- IOptionsMonitor options,
IOpenIddictApplicationCache cache,
- IOpenIddictApplicationStoreResolver resolver,
- ILogger> logger)
- : OpenIddictApplicationManager(cache, logger, options, resolver) where T : class
+ ILogger> logger,
+ IOptionsMonitor options,
+ IOpenIddictApplicationStore store)
+ : OpenIddictApplicationManager(cache, logger, options, store) where T : class
{
protected override ValueTask ValidateClientSecretAsync(string secret, string comparand,
CancellationToken cancellationToken = default)
diff --git a/backend/src/Squidex/Areas/IdentityServer/Config/DynamicApplicationStore.cs b/backend/src/Squidex/Areas/IdentityServer/Config/DynamicApplicationStore.cs
index 825b643b2..a081deb24 100644
--- a/backend/src/Squidex/Areas/IdentityServer/Config/DynamicApplicationStore.cs
+++ b/backend/src/Squidex/Areas/IdentityServer/Config/DynamicApplicationStore.cs
@@ -148,7 +148,7 @@ public class DynamicApplicationStore(IServiceProvider serviceProvider) : InMemor
Permissions =
{
Permissions.Endpoints.Authorization,
- Permissions.Endpoints.Logout,
+ Permissions.Endpoints.EndSession,
Permissions.Endpoints.Token,
Permissions.GrantTypes.AuthorizationCode,
Permissions.GrantTypes.RefreshToken,
@@ -175,7 +175,7 @@ public class DynamicApplicationStore(IServiceProvider serviceProvider) : InMemor
Permissions =
{
Permissions.Endpoints.Authorization,
- Permissions.Endpoints.Logout,
+ Permissions.Endpoints.EndSession,
Permissions.Endpoints.Token,
Permissions.GrantTypes.Implicit,
Permissions.ResponseTypes.IdToken,
diff --git a/backend/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs b/backend/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs
index 9dc70a71f..bfc7f4d80 100644
--- a/backend/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs
+++ b/backend/src/Squidex/Areas/IdentityServer/Config/IdentityServerServices.cs
@@ -114,10 +114,10 @@ public static class IdentityServerServices
builder.UseAspNetCore()
.DisableTransportSecurityRequirement()
.EnableAuthorizationEndpointPassthrough()
- .EnableLogoutEndpointPassthrough()
+ .EnableEndSessionEndpointPassthrough()
.EnableStatusCodePagesIntegration()
.EnableTokenEndpointPassthrough()
- .EnableUserinfoEndpointPassthrough();
+ .EnableUserInfoEndpointPassthrough();
builder.SetAccessTokenLifetime(TimeSpan.FromDays(30));
})
@@ -164,16 +164,16 @@ public static class IdentityServerServices
options.IntrospectionEndpointUris.SetEndpoint(
BuildUrl("connect/introspect"));
- options.LogoutEndpointUris.SetEndpoint(
+ options.EndSessionEndpointUris.SetEndpoint(
BuildUrl("connect/logout"));
options.TokenEndpointUris.SetEndpoint(
BuildUrl("connect/token"));
- options.UserinfoEndpointUris.SetEndpoint(
+ options.UserInfoEndpointUris.SetEndpoint(
BuildUrl("connect/userinfo"));
- options.CryptographyEndpointUris.SetEndpoint(
+ options.JsonWebKeySetEndpointUris.SetEndpoint(
BuildUrl(".well-known/jwks"));
options.ConfigurationEndpointUris.SetEndpoint(
diff --git a/backend/src/Squidex/Areas/IdentityServer/Controllers/Connect/AuthorizationController.cs b/backend/src/Squidex/Areas/IdentityServer/Controllers/Connect/AuthorizationController.cs
index c0bcaca15..da22df1ea 100644
--- a/backend/src/Squidex/Areas/IdentityServer/Controllers/Connect/AuthorizationController.cs
+++ b/backend/src/Squidex/Areas/IdentityServer/Controllers/Connect/AuthorizationController.cs
@@ -115,7 +115,7 @@ public class AuthorizationController(
if (User.Identity?.IsAuthenticated != true)
{
- if (request.HasPrompt(Prompts.None))
+ if (request.HasPromptValue(PromptValues.None))
{
var properties = new AuthenticationProperties(new Dictionary
{
diff --git a/backend/src/Squidex/Config/Domain/EventSourcingServices.cs b/backend/src/Squidex/Config/Domain/EventSourcingServices.cs
index 71481a25c..55d6d42f5 100644
--- a/backend/src/Squidex/Config/Domain/EventSourcingServices.cs
+++ b/backend/src/Squidex/Config/Domain/EventSourcingServices.cs
@@ -5,8 +5,6 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
-using EventStore.Client;
-using Squidex.Events.GetEventStore;
using Squidex.Hosting.Configuration;
using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.EventSourcing;
@@ -37,15 +35,6 @@ public static class EventSourcingServices
services.AddSquidexEntityFrameworkEventStore(config);
},
- ["GetEventStore"] = () =>
- {
- var configuration = config.GetRequiredValue("eventStore:getEventStore:configuration");
-
- services.AddSingletonAs(_ => EventStoreClientSettings.Create(configuration))
- .AsSelf();
-
- services.AddGetEventStore(config);
- },
});
services.AddTransientAs()
diff --git a/backend/src/Squidex/Config/Web/WebServices.cs b/backend/src/Squidex/Config/Web/WebServices.cs
index 748013a9d..d30a47623 100644
--- a/backend/src/Squidex/Config/Web/WebServices.cs
+++ b/backend/src/Squidex/Config/Web/WebServices.cs
@@ -68,9 +68,6 @@ public static class WebServices
services.AddSingletonAs()
.As();
- services.AddSingletonAs()
- .As();
-
services.Configure(options =>
{
options.SuppressInferBindingSourcesForParameters = true;
diff --git a/backend/src/Squidex/Squidex.csproj b/backend/src/Squidex/Squidex.csproj
index fc95a5e3e..c88c96957 100644
--- a/backend/src/Squidex/Squidex.csproj
+++ b/backend/src/Squidex/Squidex.csproj
@@ -1,6 +1,6 @@
- net8.0
+ net10.0
latest
enable
en
@@ -29,66 +29,62 @@
-
-
-
-
-
-
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
@@ -170,4 +166,8 @@
Resources.Designer.cs
+
+
+
+
\ No newline at end of file
diff --git a/backend/tests/Squidex.Data.Tests.CodeGenerator/Squidex.Data.Tests.CodeGenerator.csproj b/backend/tests/Squidex.Data.Tests.CodeGenerator/Squidex.Data.Tests.CodeGenerator.csproj
index 656f95683..4a6d8fa0f 100644
--- a/backend/tests/Squidex.Data.Tests.CodeGenerator/Squidex.Data.Tests.CodeGenerator.csproj
+++ b/backend/tests/Squidex.Data.Tests.CodeGenerator/Squidex.Data.Tests.CodeGenerator.csproj
@@ -16,12 +16,12 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/MySqlMigrationTests.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/MySqlMigrationTests.cs
index c514efbd6..1c4bd93e0 100644
--- a/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/MySqlMigrationTests.cs
+++ b/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/MySqlMigrationTests.cs
@@ -18,7 +18,7 @@ namespace Squidex.EntityFramework.Migrations;
[Trait("Category", "TestContainer")]
public class MySqlMigrationTests : IAsyncLifetime
{
- private readonly MySqlContainer mysql = new MySqlBuilder().Build();
+ private readonly MySqlContainer mysql = new MySqlBuilder("mysql:8.0").Build();
public async Task InitializeAsync()
{
diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/PostgresMigrationTests.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/PostgresMigrationTests.cs
index 1893160ce..29574329c 100644
--- a/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/PostgresMigrationTests.cs
+++ b/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/PostgresMigrationTests.cs
@@ -19,8 +19,7 @@ namespace Squidex.EntityFramework.Migrations;
public class PostgresMigrationTests : IAsyncLifetime
{
private readonly PostgreSqlContainer postgreSql =
- new PostgreSqlBuilder()
- .WithImage("postgis/postgis")
+ new PostgreSqlBuilder("postgis/postgis")
.Build();
public async Task InitializeAsync()
diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/SqlServerMigrationTests.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/SqlServerMigrationTests.cs
index bd2c55658..9dd05cc8e 100644
--- a/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/SqlServerMigrationTests.cs
+++ b/backend/tests/Squidex.Data.Tests/EntityFramework/Migrations/SqlServerMigrationTests.cs
@@ -18,7 +18,9 @@ namespace Squidex.EntityFramework.Migrations;
[Trait("Category", "TestContainer")]
public class SqlServerMigrationTests : IAsyncLifetime
{
- private readonly MsSqlContainer sqlServer = new MsSqlBuilder().Build();
+ private readonly MsSqlContainer sqlServer =
+ new MsSqlBuilder("mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04")
+ .Build();
public async Task InitializeAsync()
{
diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs
index 74962a409..bdb5c7b4b 100644
--- a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs
+++ b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/MySqlFixture.cs
@@ -22,7 +22,7 @@ namespace Squidex.EntityFramework.TestHelpers;
public class MySqlFixture(string? reuseId = null) : IAsyncLifetime, ISqlContentFixture
{
private readonly MySqlContainer mysql =
- new MySqlBuilder()
+ new MySqlBuilder("mysql:8.0")
.WithReuse(true)
.WithLabel("reuse-id", reuseId)
.WithCommand("--log-bin-trust-function-creators=1", "--local-infile=1")
diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs
index d75322fcf..b811ea70e 100644
--- a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs
+++ b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/PostgresFixture.cs
@@ -22,8 +22,7 @@ namespace Squidex.EntityFramework.TestHelpers;
public class PostgresFixture(string? reuseId) : IAsyncLifetime, ISqlContentFixture
{
private readonly PostgreSqlContainer postgreSql =
- new PostgreSqlBuilder()
- .WithImage("postgis/postgis")
+ new PostgreSqlBuilder("postgis/postgis")
.WithReuse(true)
.WithLabel("reuse-id", reuseId)
.Build();
diff --git a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs
index 06d5d4fb0..fdfc61caa 100644
--- a/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs
+++ b/backend/tests/Squidex.Data.Tests/EntityFramework/TestHelpers/SqlServerFixture.cs
@@ -23,8 +23,7 @@ namespace Squidex.EntityFramework.TestHelpers;
public class SqlServerFixture(string? reuseId = null) : IAsyncLifetime, ISqlContentFixture
{
private readonly MsSqlContainer sqlServer =
- new MsSqlBuilder()
- .WithImage("vibs2006/sql_server_fts")
+ new MsSqlBuilder("vibs2006/sql_server_fts")
.WithReuse(true)
.WithLabel("reuse-id", reuseId)
.Build();
diff --git a/backend/tests/Squidex.Data.Tests/MongoDb/Domain/Contents/Text/AtlasParsingTests.cs b/backend/tests/Squidex.Data.Tests/MongoDb/Domain/Contents/Text/AtlasParsingTests.cs
index 7a2be7395..69904e20c 100644
--- a/backend/tests/Squidex.Data.Tests/MongoDb/Domain/Contents/Text/AtlasParsingTests.cs
+++ b/backend/tests/Squidex.Data.Tests/MongoDb/Domain/Contents/Text/AtlasParsingTests.cs
@@ -21,7 +21,7 @@ public class AtlasParsingTests
private static readonly LuceneQueryVisitor QueryVisitor = new LuceneQueryVisitor();
private static readonly LuceneQueryAnalyzer QueryParser =
new LuceneQueryAnalyzer(LuceneVersion.LUCENE_48, "*",
- new StandardAnalyzer(LuceneVersion.LUCENE_48, CharArraySet.EMPTY_SET));
+ new StandardAnalyzer(LuceneVersion.LUCENE_48, CharArraySet.Empty));
private static readonly JsonSerializerOptions JsonSerializerOptions = new JsonSerializerOptions
{
WriteIndented = true,
diff --git a/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/DocumentDbFixture.cs b/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/DocumentDbFixture.cs
index f30afbbcf..13fb7fb71 100644
--- a/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/DocumentDbFixture.cs
+++ b/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/DocumentDbFixture.cs
@@ -35,7 +35,7 @@ public class DocumentDbFixture
);
var certPath = TestConfig.Configuration.GetValue("documentDb:keyFile")!;
- var certFile = new X509Certificate2(certPath);
+ var certFile = X509CertificateLoader.LoadCertificateFromFile(certPath);
settings.RetryWrites = false;
settings.RetryReads = false;
diff --git a/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/MongoFixture.cs b/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/MongoFixture.cs
index 22e518307..d20eba25b 100644
--- a/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/MongoFixture.cs
+++ b/backend/tests/Squidex.Data.Tests/MongoDb/TestHelpers/MongoFixture.cs
@@ -21,7 +21,7 @@ public sealed class MongoFixtureCollection : ICollectionFixture
public class MongoFixture : IAsyncLifetime
{
private readonly MongoDbContainer mongoDb =
- new MongoDbBuilder()
+ new MongoDbBuilder("mongo:6.0")
.WithReuse(false)
.WithLabel("reuse-id", "squidex-mongodb")
.Build();
diff --git a/backend/tests/Squidex.Data.Tests/Squidex.Data.Tests.csproj b/backend/tests/Squidex.Data.Tests/Squidex.Data.Tests.csproj
index c569ef665..0b477497a 100644
--- a/backend/tests/Squidex.Data.Tests/Squidex.Data.Tests.csproj
+++ b/backend/tests/Squidex.Data.Tests/Squidex.Data.Tests.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
Squidex
latest
enable
@@ -19,30 +19,30 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/DefaultValuesTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/DefaultValuesTests.cs
index af06db644..052925bc4 100644
--- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/DefaultValuesTests.cs
+++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/ConvertContent/DefaultValuesTests.cs
@@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
+using System.Globalization;
using NodaTime;
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Core.Contents;
@@ -71,7 +72,7 @@ public class DefaultValuesTests
.AddInvariant(456))
.AddField("myDatetime",
new ContentFieldData()
- .AddInvariant(now.ToString()))
+ .AddInvariant(now.ToString("g", CultureInfo.InvariantCulture)))
.AddField("myBoolean",
new ContentFieldData()
.AddInvariant(true))
@@ -111,7 +112,7 @@ public class DefaultValuesTests
.AddInvariant(456))
.AddField("myDatetime",
new ContentFieldData()
- .AddInvariant(now.ToString()))
+ .AddInvariant(now.ToString("g", CultureInfo.InvariantCulture)))
.AddField("myArray",
new ContentFieldData()
.AddInvariant(
@@ -151,7 +152,7 @@ public class DefaultValuesTests
.AddInvariant(456))
.AddField("myDatetime",
new ContentFieldData()
- .AddInvariant(now.ToString()))
+ .AddInvariant(now.ToString("g", CultureInfo.InvariantCulture)))
.AddField("myBoolean",
new ContentFieldData()
.AddInvariant(true))
@@ -193,7 +194,7 @@ public class DefaultValuesTests
.AddInvariant(456))
.AddField("myDatetime",
new ContentFieldData()
- .AddInvariant(now.ToString()))
+ .AddInvariant(now.ToString("g", CultureInfo.InvariantCulture)))
.AddField("myBoolean",
new ContentFieldData()
.AddInvariant(true))
diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj b/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
index 4b60b6398..bc84a2fe5 100644
--- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
+++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
Squidex.Domain.Apps.Core
latest
enable
@@ -13,25 +13,25 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DomainObject/ContentsBulkUpdateCommandMiddlewareTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DomainObject/ContentsBulkUpdateCommandMiddlewareTests.cs
index 4399522aa..13243f3b3 100644
--- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DomainObject/ContentsBulkUpdateCommandMiddlewareTests.cs
+++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/DomainObject/ContentsBulkUpdateCommandMiddlewareTests.cs
@@ -122,7 +122,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id == id && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId == id), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId == id), A._))
.MustHaveHappenedOnceExactly();
}
@@ -157,11 +157,11 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id == content2.Id && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId == content1.Id), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId == content1.Id), A._))
.MustHaveHappenedOnceExactly();
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId == content2.Id), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId == content2.Id), A._))
.MustHaveHappenedOnceExactly();
}
@@ -180,7 +180,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id != default && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId != default), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId != default), A._))
.MustHaveHappenedOnceExactly();
}
@@ -199,7 +199,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id != default && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId != default), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId != default), A._))
.MustHaveHappenedOnceExactly();
}
@@ -218,7 +218,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id != default && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId == id), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId == id), A._))
.MustHaveHappenedOnceExactly();
}
@@ -237,7 +237,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id != default && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.Data == data && x.ContentId == id), A._))
+ A.That.Matches(x => ReferenceEquals(x.Data, data) && x.ContentId == id), A._))
.MustHaveHappenedOnceExactly();
}
@@ -256,7 +256,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id == id && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.ContentId == id && x.Data == data), A._))
+ A.That.Matches(x => x.ContentId == id && ReferenceEquals(x.Data, data)), A._))
.MustHaveHappened();
}
@@ -293,7 +293,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id == id && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.ContentId == id && x.Data == data), A._))
+ A.That.Matches(x => x.ContentId == id && ReferenceEquals(x.Data, data)), A._))
.MustHaveHappened();
}
@@ -367,7 +367,7 @@ public class ContentsBulkUpdateCommandMiddlewareTests : GivenContext
Assert.Single(actual, x => x.JobIndex == 0 && x.Id == id && x.Exception == null);
A.CallTo(() => commandBus.PublishAsync(
- A.That.Matches(x => x.ContentId == id && x.Data == data), A._))
+ A.That.Matches(x => x.ContentId == id && ReferenceEquals(x.Data, data)), A._))
.MustHaveHappened();
}
diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs
index ce14e684d..c655d9cec 100644
--- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs
+++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/GraphQL/TestContent.cs
@@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
+using System.Globalization;
using NodaTime;
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Domain.Apps.Core.Schemas;
@@ -526,7 +527,7 @@ public static class TestContent
},
["myDatetime"] = new
{
- iv = content.LastModified.ToString(),
+ iv = content.LastModified.ToString("g", CultureInfo.CurrentCulture),
},
["myReferences"] = new
{
@@ -694,7 +695,7 @@ public static class TestContent
},
["myDatetime"] = new
{
- iv = content.LastModified.ToString(),
+ iv = content.LastModified.ToString("g", CultureInfo.CurrentCulture),
},
["myGeolocation"] = new
{
@@ -868,7 +869,7 @@ public static class TestContent
["myLocalizedString"] = "de-DE",
["myNumber"] = 1.0,
["myBoolean"] = true,
- ["myDatetime"] = content.LastModified.ToString(),
+ ["myDatetime"] = content.LastModified.ToString("g", CultureInfo.CurrentCulture),
["myGeolocation"] = new
{
latitude = 10,
diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Text/ElasticSearchTextIndexFixture.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Text/ElasticSearchTextIndexFixture.cs
index 961de0d92..de9070718 100644
--- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Text/ElasticSearchTextIndexFixture.cs
+++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Text/ElasticSearchTextIndexFixture.cs
@@ -15,7 +15,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Text;
public sealed class ElasticSearchTextIndexFixture : IAsyncLifetime
{
private readonly ElasticsearchContainer elastic =
- new ElasticsearchBuilder()
+ new ElasticsearchBuilder("elasticsearch:8.6.1")
.WithReuse(true)
.WithLabel("resuse-id", "elastic-text")
.Build();
diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj
index e41d71c85..1d586f950 100644
--- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj
+++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
Squidex.Domain.Apps.Entities
latest
enable
@@ -20,32 +20,32 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/TestHelpers/VerifySettings.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/TestHelpers/VerifySettings.cs
index ebf57fb01..709943e33 100644
--- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/TestHelpers/VerifySettings.cs
+++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/TestHelpers/VerifySettings.cs
@@ -116,7 +116,7 @@ public static partial class VerifySettings
var originalKeyResolver = dictionaryContract.DictionaryKeyResolver!;
- dictionaryContract.DictionaryKeyResolver = (name, original) =>
+ dictionaryContract.DictionaryKeyResolver = (writer, name, original) =>
{
if (original is string id && Guid.TryParse(id, out var guid1))
{
@@ -132,7 +132,7 @@ public static partial class VerifySettings
return $"Guid_{index}";
}
- return originalKeyResolver(name, original);
+ return originalKeyResolver(writer, name, original);
};
return contract;
diff --git a/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj b/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
index 264a9a577..4dd112148 100644
--- a/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
+++ b/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
Squidex.Domain.Users
latest
enable
@@ -13,21 +13,21 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tests/Squidex.Infrastructure.Tests/Json/Objects/JsonObjectTests.cs b/backend/tests/Squidex.Infrastructure.Tests/Json/Objects/JsonObjectTests.cs
index 2bfd86133..4420a0fe0 100644
--- a/backend/tests/Squidex.Infrastructure.Tests/Json/Objects/JsonObjectTests.cs
+++ b/backend/tests/Squidex.Infrastructure.Tests/Json/Objects/JsonObjectTests.cs
@@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
+using System.Globalization;
using System.Text.Json;
using NodaTime;
@@ -252,8 +253,8 @@ public class JsonObjectTests
foreach (var json in jsons)
{
- Assert.Equal(instant.ToString(), json.Value);
- Assert.Equal(instant.ToString(), json.AsString);
+ Assert.Equal(instant.ToString("g", CultureInfo.InvariantCulture), json.Value);
+ Assert.Equal(instant.ToString("g", CultureInfo.InvariantCulture), json.AsString);
Assert.Equal(JsonValueType.String, json.Type);
Assert.Throws(() => json.AsBoolean);
diff --git a/backend/tests/Squidex.Infrastructure.Tests/Migrations/MigratorTests.cs b/backend/tests/Squidex.Infrastructure.Tests/Migrations/MigratorTests.cs
index 416b84b85..bafbe59bb 100644
--- a/backend/tests/Squidex.Infrastructure.Tests/Migrations/MigratorTests.cs
+++ b/backend/tests/Squidex.Infrastructure.Tests/Migrations/MigratorTests.cs
@@ -20,7 +20,7 @@ public class MigratorTests
public sealed class InMemoryStatus : IMigrationStatus
{
- private readonly object lockObject = new object();
+ private readonly Lock lockObject = new Lock();
private int version;
private bool isLocked;
diff --git a/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj b/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
index b0b665b08..afdb72ed3 100644
--- a/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
+++ b/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
Squidex.Infrastructure
latest
enable
@@ -12,26 +12,26 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj b/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj
index f5b48f41b..6bdf55416 100644
--- a/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj
+++ b/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
Squidex.Web
latest
enable
@@ -14,21 +14,21 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/backend/tools/GenerateLanguages/GenerateLanguages.csproj b/backend/tools/GenerateLanguages/GenerateLanguages.csproj
index 5c8d2f889..bf0057afd 100644
--- a/backend/tools/GenerateLanguages/GenerateLanguages.csproj
+++ b/backend/tools/GenerateLanguages/GenerateLanguages.csproj
@@ -1,7 +1,7 @@
Exe
- net8.0
+ net10.0
latest
enable
diff --git a/frontend/generator/Generator/Generator.csproj b/frontend/generator/Generator/Generator.csproj
index 18d724789..5a0e400e5 100644
--- a/frontend/generator/Generator/Generator.csproj
+++ b/frontend/generator/Generator/Generator.csproj
@@ -2,7 +2,7 @@
Exe
- net8.0
+ net10.0
enable
enable
diff --git a/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj b/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj
index 62a35c251..ad98228d7 100644
--- a/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj
+++ b/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj
@@ -1,27 +1,27 @@
Exe
- net8.0
+ net10.0
latest
enable
enable
-
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
-
+
-
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/tools/TestSuite/TestSuite.LoadTests/TestSuite.LoadTests.csproj b/tools/TestSuite/TestSuite.LoadTests/TestSuite.LoadTests.csproj
index 46cc58fd3..c569ea175 100644
--- a/tools/TestSuite/TestSuite.LoadTests/TestSuite.LoadTests.csproj
+++ b/tools/TestSuite/TestSuite.LoadTests/TestSuite.LoadTests.csproj
@@ -1,20 +1,20 @@
Exe
- net8.0
+ net10.0
11.0
enable
enable
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj b/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj
index 4b4ee6fde..2a33ce6f7 100644
--- a/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj
+++ b/tools/TestSuite/TestSuite.Shared/TestSuite.Shared.csproj
@@ -1,27 +1,27 @@
- net8.0
+ net10.0
TestSuite
latest
enable
enable
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
+
+
+
+
+
-
+
-
+
diff --git a/tools/TestSuite/TestSuite.sln b/tools/TestSuite/TestSuite.sln
deleted file mode 100644
index 5fcbe0f8f..000000000
--- a/tools/TestSuite/TestSuite.sln
+++ /dev/null
@@ -1,37 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSuite.Shared", "TestSuite.Shared\TestSuite.Shared.csproj", "{37484845-5542-4E52-AB00-C4576B84FE75}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSuite.ApiTests", "TestSuite.ApiTests\TestSuite.ApiTests.csproj", "{E5F048CB-5307-4E4C-8DAB-2F1C0E5CACF3}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestSuite.LoadTests", "TestSuite.LoadTests\TestSuite.LoadTests.csproj", "{F37572D9-4880-40F4-B3CB-83F58A40CA48}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {37484845-5542-4E52-AB00-C4576B84FE75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {37484845-5542-4E52-AB00-C4576B84FE75}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {37484845-5542-4E52-AB00-C4576B84FE75}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {37484845-5542-4E52-AB00-C4576B84FE75}.Release|Any CPU.Build.0 = Release|Any CPU
- {E5F048CB-5307-4E4C-8DAB-2F1C0E5CACF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E5F048CB-5307-4E4C-8DAB-2F1C0E5CACF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E5F048CB-5307-4E4C-8DAB-2F1C0E5CACF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E5F048CB-5307-4E4C-8DAB-2F1C0E5CACF3}.Release|Any CPU.Build.0 = Release|Any CPU
- {F37572D9-4880-40F4-B3CB-83F58A40CA48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F37572D9-4880-40F4-B3CB-83F58A40CA48}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F37572D9-4880-40F4-B3CB-83F58A40CA48}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F37572D9-4880-40F4-B3CB-83F58A40CA48}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {9F1CDBED-7D91-4B46-B4C5-0FE086E29285}
- EndGlobalSection
-EndGlobal
diff --git a/tools/TestSuite/TestSuite.slnx b/tools/TestSuite/TestSuite.slnx
new file mode 100644
index 000000000..eefea7bba
--- /dev/null
+++ b/tools/TestSuite/TestSuite.slnx
@@ -0,0 +1,5 @@
+
+
+
+
+