diff --git a/.github/workflows/build-dotnet.yml b/.github/workflows/build-dotnet.yml index b24e0a3e1..956376108 100644 --- a/.github/workflows/build-dotnet.yml +++ b/.github/workflows/build-dotnet.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - dotnet-version: ['8.0.x' ] + dotnet-version: ['9.0.x' ] steps: - name: Checkout diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index ec63db911..000000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,71 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ main ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ main ] - schedule: - - cron: '19 13 * * 0' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'csharp' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] - # Learn more: - # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 69c2a535b..03c5d3354 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -17,7 +17,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore dependencies run: dotnet restore "./Synapse.sln" - name: Build @@ -159,7 +159,7 @@ jobs: - name: Setup uses: actions/setup-dotnet@v2 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore run: dotnet restore - name: Build @@ -208,7 +208,7 @@ jobs: - name: Setup uses: actions/setup-dotnet@v2 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore run: dotnet restore - name: Build @@ -257,7 +257,7 @@ jobs: - name: Setup uses: actions/setup-dotnet@v2 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore run: dotnet restore - name: Build @@ -306,7 +306,7 @@ jobs: - name: Setup uses: actions/setup-dotnet@v2 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore run: dotnet restore - name: Build @@ -355,7 +355,7 @@ jobs: - name: Setup uses: actions/setup-dotnet@v2 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore run: dotnet restore - name: Build diff --git a/src/api/Synapse.Api.Application/Synapse.Api.Application.csproj b/src/api/Synapse.Api.Application/Synapse.Api.Application.csproj index 225a40a5d..e7625d2e1 100644 --- a/src/api/Synapse.Api.Application/Synapse.Api.Application.csproj +++ b/src/api/Synapse.Api.Application/Synapse.Api.Application.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -44,7 +44,7 @@ - + diff --git a/src/api/Synapse.Api.Client.Core/Synapse.Api.Client.Core.csproj b/src/api/Synapse.Api.Client.Core/Synapse.Api.Client.Core.csproj index ed58ff6b6..c8fd7e3fd 100644 --- a/src/api/Synapse.Api.Client.Core/Synapse.Api.Client.Core.csproj +++ b/src/api/Synapse.Api.Client.Core/Synapse.Api.Client.Core.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj b/src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj index 69649f262..ab4712e19 100644 --- a/src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj +++ b/src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -42,7 +42,7 @@ - + diff --git a/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj b/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj index 36ad89177..89e63f06a 100644 --- a/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj +++ b/src/api/Synapse.Api.Http/Synapse.Api.Http.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -43,9 +43,9 @@ - - - + + + diff --git a/src/api/Synapse.Api.Server/Dockerfile b/src/api/Synapse.Api.Server/Dockerfile index 2162d4bbf..ce4b37588 100644 --- a/src/api/Synapse.Api.Server/Dockerfile +++ b/src/api/Synapse.Api.Server/Dockerfile @@ -1,9 +1,9 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base USER app WORKDIR /app EXPOSE 8080 -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["README.md", "README.md"] diff --git a/src/api/Synapse.Api.Server/Synapse.Api.Server.csproj b/src/api/Synapse.Api.Server/Synapse.Api.Server.csproj index 6e654e52c..ff58c188a 100644 --- a/src/api/Synapse.Api.Server/Synapse.Api.Server.csproj +++ b/src/api/Synapse.Api.Server/Synapse.Api.Server.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -27,14 +27,15 @@ Linux ..\..\.. false + false - - - + + + - + diff --git a/src/cli/Synapse.Cli/Synapse.Cli.csproj b/src/cli/Synapse.Cli/Synapse.Cli.csproj index 70282ae21..96eec6ee5 100644 --- a/src/cli/Synapse.Cli/Synapse.Cli.csproj +++ b/src/cli/Synapse.Cli/Synapse.Cli.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable Exe @@ -29,8 +29,8 @@ - - + + diff --git a/src/core/Synapse.Core.Infrastructure.Containers.Docker/Synapse.Core.Infrastructure.Containers.Docker.csproj b/src/core/Synapse.Core.Infrastructure.Containers.Docker/Synapse.Core.Infrastructure.Containers.Docker.csproj index 419edbb36..68ed5c408 100644 --- a/src/core/Synapse.Core.Infrastructure.Containers.Docker/Synapse.Core.Infrastructure.Containers.Docker.csproj +++ b/src/core/Synapse.Core.Infrastructure.Containers.Docker/Synapse.Core.Infrastructure.Containers.Docker.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/src/core/Synapse.Core.Infrastructure.Containers.Kubernetes/Synapse.Core.Infrastructure.Containers.Kubernetes.csproj b/src/core/Synapse.Core.Infrastructure.Containers.Kubernetes/Synapse.Core.Infrastructure.Containers.Kubernetes.csproj index 0d73f0fad..968f48c2d 100644 --- a/src/core/Synapse.Core.Infrastructure.Containers.Kubernetes/Synapse.Core.Infrastructure.Containers.Kubernetes.csproj +++ b/src/core/Synapse.Core.Infrastructure.Containers.Kubernetes/Synapse.Core.Infrastructure.Containers.Kubernetes.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj b/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj index ef46e7400..6c436fce2 100644 --- a/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj +++ b/src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -44,12 +44,12 @@ - - - - - - + + + + + + diff --git a/src/core/Synapse.Core/Synapse.Core.csproj b/src/core/Synapse.Core/Synapse.Core.csproj index af43616f3..0af8b120a 100644 --- a/src/core/Synapse.Core/Synapse.Core.csproj +++ b/src/core/Synapse.Core/Synapse.Core.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -66,9 +66,9 @@ - - - + + + diff --git a/src/correlator/Synapse.Correlator/Dockerfile b/src/correlator/Synapse.Correlator/Dockerfile index e2b5452c7..08e7c515c 100644 --- a/src/correlator/Synapse.Correlator/Dockerfile +++ b/src/correlator/Synapse.Correlator/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base USER root RUN apt-get update RUN apt-get install -y jq @@ -6,7 +6,7 @@ USER app WORKDIR /app EXPOSE 8080 -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["README.md", "README.md"] diff --git a/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj b/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj index c9bd808a5..3b502a31f 100644 --- a/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj +++ b/src/correlator/Synapse.Correlator/Synapse.Correlator.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable Exe @@ -29,20 +29,21 @@ Linux ..\..\.. ..\..\..\docker-compose.dcproj + false - - + + - - - - - - - - + + + + + + + + diff --git a/src/dashboard/Synapse.Dashboard.StateManagement/Synapse.Dashboard.StateManagement.csproj b/src/dashboard/Synapse.Dashboard.StateManagement/Synapse.Dashboard.StateManagement.csproj index b25eb758f..4bcda49da 100644 --- a/src/dashboard/Synapse.Dashboard.StateManagement/Synapse.Dashboard.StateManagement.csproj +++ b/src/dashboard/Synapse.Dashboard.StateManagement/Synapse.Dashboard.StateManagement.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -9,9 +9,9 @@ - - - + + + diff --git a/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj b/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj index f1eac818c..e8f75430b 100644 --- a/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj +++ b/src/dashboard/Synapse.Dashboard/Synapse.Dashboard.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en @@ -10,14 +10,14 @@ - + - - - + + + - + diff --git a/src/operator/Synapse.Operator/Dockerfile b/src/operator/Synapse.Operator/Dockerfile index b986bfb3f..41511e174 100644 --- a/src/operator/Synapse.Operator/Dockerfile +++ b/src/operator/Synapse.Operator/Dockerfile @@ -1,11 +1,11 @@ -FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base +FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base USER root RUN apt-get update RUN apt-get install -y jq USER app WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["README.md", "README.md"] diff --git a/src/operator/Synapse.Operator/Synapse.Operator.csproj b/src/operator/Synapse.Operator/Synapse.Operator.csproj index 396f58b3b..52fd86dae 100644 --- a/src/operator/Synapse.Operator/Synapse.Operator.csproj +++ b/src/operator/Synapse.Operator/Synapse.Operator.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable Exe @@ -28,6 +28,7 @@ ghcr.io/serverlessworkflow/synapse/operator Linux ..\..\.. + false @@ -50,8 +51,8 @@ - - + + diff --git a/src/runner/Synapse.Runner/AuthorizationInfo.cs b/src/runner/Synapse.Runner/AuthorizationInfo.cs index bd838fc52..92420138d 100644 --- a/src/runner/Synapse.Runner/AuthorizationInfo.cs +++ b/src/runner/Synapse.Runner/AuthorizationInfo.cs @@ -48,8 +48,8 @@ public class AuthorizationInfo(string scheme, string parameter) /// A new based on the specified public static async Task CreateAsync(WorkflowDefinition workflow, AuthenticationPolicyDefinition authentication, IServiceProvider serviceProvider, CancellationToken cancellationToken = default) { - ArgumentNullException.ThrowIfNull(nameof(authentication)); - ArgumentNullException.ThrowIfNull(nameof(serviceProvider)); + ArgumentNullException.ThrowIfNull(authentication); + ArgumentNullException.ThrowIfNull(serviceProvider); string scheme, parameter; var logger = serviceProvider.GetRequiredService().CreateLogger("AuthenticationPolicyHandler"); if (!string.IsNullOrWhiteSpace(authentication.Use)) diff --git a/src/runner/Synapse.Runner/Dockerfile b/src/runner/Synapse.Runner/Dockerfile index 52e02dcc5..62573a5f4 100644 --- a/src/runner/Synapse.Runner/Dockerfile +++ b/src/runner/Synapse.Runner/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base +FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base USER root RUN apt-get update RUN apt-get install -y jq @@ -7,7 +7,7 @@ RUN apt-get install -y python3 USER app WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["README.md", "README.md"] diff --git a/src/runner/Synapse.Runner/Program.cs b/src/runner/Synapse.Runner/Program.cs index 5d9269faf..f9348b8c1 100644 --- a/src/runner/Synapse.Runner/Program.cs +++ b/src/runner/Synapse.Runner/Program.cs @@ -11,7 +11,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -using Microsoft.Extensions.Http; using Synapse; using Synapse.Core.Infrastructure.Containers; @@ -89,16 +88,11 @@ if (!options.Certificates.Validate) { - ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; - services.ConfigureAll(options => + services.ConfigureHttpClientDefaults(httpClient => { - options.HttpMessageHandlerBuilderActions.Add(builder => + httpClient.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler() { - builder.PrimaryHandler = new HttpClientHandler - { - ClientCertificateOptions = ClientCertificateOption.Manual, - ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) => true - }; + ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator }); }); } diff --git a/src/runner/Synapse.Runner/Services/Executors/DoTaskExecutor.cs b/src/runner/Synapse.Runner/Services/Executors/DoTaskExecutor.cs index cafe21eee..0f1e68243 100644 --- a/src/runner/Synapse.Runner/Services/Executors/DoTaskExecutor.cs +++ b/src/runner/Synapse.Runner/Services/Executors/DoTaskExecutor.cs @@ -65,7 +65,7 @@ protected override async Task DoExecuteAsync(CancellationToken cancellationToken : last.Status == null || last.IsOperative || last.Status == TaskInstanceStatus.Suspended ? this.Task.Definition.Do.FirstOrDefault(e => e.Key == last.Name) ?? throw new NullReferenceException($"Failed to find a task with the specified name '{last.Name}' at '{this.Task.Instance.Reference}'") : this.Task.Definition.Do.GetTaskAfter(last); - if (last != null && (last.Status == null || last.IsOperative || last.Status == TaskInstanceStatus.Suspended)) last = await subtasks.LastOrDefaultAsync(t => last.Status != null && !t.IsOperative && t.Status != TaskInstanceStatus.Suspended).ConfigureAwait(false); + if (last != null && (last.Status == null || last.IsOperative || last.Status == TaskInstanceStatus.Suspended)) last = await subtasks.LastOrDefaultAsync(t => last.Status != null && !t.IsOperative && t.Status != TaskInstanceStatus.Suspended, cancellationToken).ConfigureAwait(false); if (nextDefinition == null) { await this.SetResultAsync(last!.OutputReference, this.Task.Definition.Then, cancellationToken).ConfigureAwait(false); @@ -122,8 +122,36 @@ protected virtual async Task OnSubtaskCompletedAsync(ITaskExecutor executor, Can break; default: next = await this.Task.Workflow.CreateTaskAsync(nextDefinition.Value, this.GetPathFor(nextDefinitionIndex, nextDefinition.Key), output, null, this.Task, false, cancellationToken).ConfigureAwait(false); - var nextExecutor = await this.CreateTaskExecutorAsync(next, nextDefinition.Value, this.Task.ContextData, this.Task.Arguments, cancellationToken).ConfigureAwait(false); - await nextExecutor.ExecuteAsync(cancellationToken).ConfigureAwait(false); + try + { + var nextExecutor = await this.CreateTaskExecutorAsync(next, nextDefinition.Value, this.Task.ContextData, this.Task.Arguments, cancellationToken).ConfigureAwait(false); + await nextExecutor.ExecuteAsync(cancellationToken).ConfigureAwait(false); + } + catch (HttpRequestException ex) + { + this.Logger.LogError("An error occurred while executing the task '{task}': {ex}", this.Task.Instance.Reference, ex); + await this.SetErrorAsync(new Error() + { + Type = ErrorType.Communication, + Title = ErrorTitle.Communication, + Status = ex.StatusCode.HasValue ? (ushort)ex.StatusCode : (ushort)ErrorStatus.Communication, + Detail = ex.Message, + Instance = this.Task.Instance.Reference + }, cancellationToken).ConfigureAwait(false); + } + catch (Exception ex) + { + var error = new Error() + { + Type = ErrorType.Runtime, + Title = ErrorTitle.Runtime, + Status = ErrorStatus.Runtime, + Detail = ex.Message, + Instance = this.Task.Instance.Reference + }; + await this.Task.Workflow.SetErrorAsync(next, error, cancellationToken).ConfigureAwait(false); + await this.SetErrorAsync(error, cancellationToken).ConfigureAwait(false); + } break; } } diff --git a/src/runner/Synapse.Runner/Synapse.Runner.csproj b/src/runner/Synapse.Runner/Synapse.Runner.csproj index 7f16edf78..64cf6921e 100644 --- a/src/runner/Synapse.Runner/Synapse.Runner.csproj +++ b/src/runner/Synapse.Runner/Synapse.Runner.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable Exe @@ -28,6 +28,7 @@ ghcr.io/serverlessworkflow/synapse/runner Linux ..\..\.. + false @@ -53,17 +54,17 @@ - - - + + + - - - - - + + + + + diff --git a/src/runtime/Synapse.Runtime.Abstractions/Synapse.Runtime.Abstractions.csproj b/src/runtime/Synapse.Runtime.Abstractions/Synapse.Runtime.Abstractions.csproj index 684379ba4..4afd2964e 100644 --- a/src/runtime/Synapse.Runtime.Abstractions/Synapse.Runtime.Abstractions.csproj +++ b/src/runtime/Synapse.Runtime.Abstractions/Synapse.Runtime.Abstractions.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/src/runtime/Synapse.Runtime.Docker/Synapse.Runtime.Docker.csproj b/src/runtime/Synapse.Runtime.Docker/Synapse.Runtime.Docker.csproj index 5fbe2580b..30dba2211 100644 --- a/src/runtime/Synapse.Runtime.Docker/Synapse.Runtime.Docker.csproj +++ b/src/runtime/Synapse.Runtime.Docker/Synapse.Runtime.Docker.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/src/runtime/Synapse.Runtime.Kubernetes/Synapse.Runtime.Kubernetes.csproj b/src/runtime/Synapse.Runtime.Kubernetes/Synapse.Runtime.Kubernetes.csproj index 3f0830849..05353fbc2 100644 --- a/src/runtime/Synapse.Runtime.Kubernetes/Synapse.Runtime.Kubernetes.csproj +++ b/src/runtime/Synapse.Runtime.Kubernetes/Synapse.Runtime.Kubernetes.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/src/runtime/Synapse.Runtime.Native/Synapse.Runtime.Native.csproj b/src/runtime/Synapse.Runtime.Native/Synapse.Runtime.Native.csproj index 4e39b6942..4c97b2c82 100644 --- a/src/runtime/Synapse.Runtime.Native/Synapse.Runtime.Native.csproj +++ b/src/runtime/Synapse.Runtime.Native/Synapse.Runtime.Native.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable en diff --git a/tests/Synapse.IntegrationTests/Synapse.IntegrationTests.csproj b/tests/Synapse.IntegrationTests/Synapse.IntegrationTests.csproj index 722714451..e358fce95 100644 --- a/tests/Synapse.IntegrationTests/Synapse.IntegrationTests.csproj +++ b/tests/Synapse.IntegrationTests/Synapse.IntegrationTests.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable @@ -14,11 +14,11 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - + all diff --git a/tests/Synapse.UnitTests/Synapse.UnitTests.csproj b/tests/Synapse.UnitTests/Synapse.UnitTests.csproj index 006a06bb2..22a363337 100644 --- a/tests/Synapse.UnitTests/Synapse.UnitTests.csproj +++ b/tests/Synapse.UnitTests/Synapse.UnitTests.csproj @@ -1,7 +1,7 @@ - net8.0 + net9.0 enable enable @@ -14,17 +14,19 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + - - - + + + - + + +