diff --git a/.github/workflows/createrelease.yml b/.github/workflows/createrelease.yml index ddf9e7b..9375e6a 100644 --- a/.github/workflows/createrelease.yml +++ b/.github/workflows/createrelease.yml @@ -5,7 +5,7 @@ on: types: [published] jobs: - buildlinux: + build: name: "Release" env: ASPNETCORE_ENVIRONMENT: "Production" @@ -14,11 +14,6 @@ jobs: steps: - uses: actions/checkout@v2.3.4 - - - name: Install NET 9 - uses: actions/setup-dotnet@v4.0.1 - with: - dotnet-version: '9.0.x' - name: Get the version id: get_version @@ -79,8 +74,8 @@ jobs: dotnet nuget push Nugets/MessagingService.IntegrationTesting.Helpers.${{ steps.get_version.outputs.VERSION }}.nupkg --api-key ${{ secrets.PRIVATEFEED_APIKEY }} --source ${{ secrets.PRIVATEFEED_URL }} --skip-duplicate deploystaging: - runs-on: [stagingserver, linux] - needs: buildlinux + runs-on: stagingserver + needs: build environment: staging name: "Deploy to Staging" @@ -88,78 +83,32 @@ jobs: - name: Download the artifact uses: actions/download-artifact@v4.1.8 with: - name: messagingservice - path: /tmp/messagingservice # Download to a temporary directory - - - name: Remove existing service (if applicable) + name: callbackhandler + + - name: Remove existing Windows service run: | - SERVICE_NAME="messagingservice" - if systemctl is-active --quiet "$SERVICE_NAME"; then - echo "Stopping existing service..." - sudo systemctl stop "$SERVICE_NAME" - fi - if systemctl is-enabled --quiet "$SERVICE_NAME"; then - echo "Disabling existing service..." - sudo systemctl disable "$SERVICE_NAME" - fi - if [ -f "/etc/systemd/system/${SERVICE_NAME}.service" ]; then - echo "Removing existing service unit file..." - sudo rm "/etc/systemd/system/${SERVICE_NAME}.service" - sudo systemctl daemon-reload - fi - + $serviceName = "Transaction Processing - Messaging Service" + # Check if the service exists + if (Get-Service -Name $serviceName -ErrorAction SilentlyContinue) { + Stop-Service -Name $serviceName + sc.exe delete $serviceName + } + - name: Unzip the files run: | - sudo mkdir -p /opt/txnproc/transactionprocessing/messagingservice - sudo unzip -o /tmp/messagingservice/messagingservice.zip -d /opt/txnproc/transactionprocessing/messagingservice - - # IMPORTANT: Add a step to ensure the .NET runtime is installed on the server - # This assumes it's not already there. If your base image already has it, you can skip this. - - name: Install .NET Runtime - run: | - # Example for Ubuntu. Adjust based on your .NET version (e.g., 8.0, 7.0) - # and if you need the SDK or just the runtime. - # This uses Microsoft's package repository for the latest versions. - wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb - sudo dpkg -i packages-microsoft-prod.deb - rm packages-microsoft-prod.deb - sudo apt update - sudo apt install -y aspnetcore-runtime-9.0 - - - name: Install and Start as a Linux service + Expand-Archive -Path messagingservice.zip -DestinationPath "C:\txnproc\transactionprocessing\messagingservice" -Force + + - name: Install as a Windows service run: | - SERVICE_NAME="messagingservice" - # The WorkingDirectory is crucial for .NET apps to find appsettings.json and other files - WORKING_DIRECTORY="/opt/txnproc/transactionprocessing/messagingservice" - DLL_NAME="MessagingService.dll" # Your application's DLL - SERVICE_DESCRIPTION="Transaction Processing - Messaging Service" - - # Create a systemd service file - echo "[Unit]" | sudo tee /etc/systemd/system/${SERVICE_NAME}.service - echo "Description=${SERVICE_DESCRIPTION}" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "After=network.target" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "[Service]" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - # IMPORTANT: Use 'dotnet' to run your DLL - echo "ExecStart=/usr/bin/dotnet ${WORKING_DIRECTORY}/${DLL_NAME}" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "WorkingDirectory=${WORKING_DIRECTORY}" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "Restart=always" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "User=youruser" # IMPORTANT: Change to a dedicated, less privileged user - echo "Group=yourgroup" # IMPORTANT: Change to a dedicated, less privileged group - echo "Environment=ASPNETCORE_ENVIRONMENT=Production" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service # Example - echo "" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "[Install]" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "WantedBy=multi-user.target" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - - # Reload systemd, enable, and start the service - sudo systemctl daemon-reload - sudo systemctl enable "$SERVICE_NAME" - sudo systemctl start "$SERVICE_NAME" - sudo systemctl status "$SERVICE_NAME" --no-pager # For debugging/verification + $serviceName = "Transaction Processing - Messaging Service" + $servicePath = "C:\txnproc\transactionprocessing\messagingservice\MessagingService.exe" + + New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic + Start-Service -Name $serviceName deployproduction: - runs-on: [productionserver, linux] - needs: [buildlinux, deploystaging] + runs-on: productionserver + needs: [build, deploystaging] environment: production name: "Deploy to Production" @@ -167,71 +116,25 @@ jobs: - name: Download the artifact uses: actions/download-artifact@v4.1.8 with: - name: messagingservice - path: /tmp/messagingservice # Download to a temporary directory - - - name: Remove existing service (if applicable) + name: callbackhandler + + - name: Remove existing Windows service run: | - SERVICE_NAME="messagingservice" - if systemctl is-active --quiet "$SERVICE_NAME"; then - echo "Stopping existing service..." - sudo systemctl stop "$SERVICE_NAME" - fi - if systemctl is-enabled --quiet "$SERVICE_NAME"; then - echo "Disabling existing service..." - sudo systemctl disable "$SERVICE_NAME" - fi - if [ -f "/etc/systemd/system/${SERVICE_NAME}.service" ]; then - echo "Removing existing service unit file..." - sudo rm "/etc/systemd/system/${SERVICE_NAME}.service" - sudo systemctl daemon-reload - fi - + $serviceName = "Transaction Processing - Messaging Service" + # Check if the service exists + if (Get-Service -Name $serviceName -ErrorAction SilentlyContinue) { + Stop-Service -Name $serviceName + sc.exe delete $serviceName + } + - name: Unzip the files run: | - sudo mkdir -p /opt/txnproc/transactionprocessing/messagingservice - sudo unzip -o /tmp/messagingservice/messagingservice.zip -d /opt/txnproc/transactionprocessing/messagingservice - - # IMPORTANT: Add a step to ensure the .NET runtime is installed on the server - # This assumes it's not already there. If your base image already has it, you can skip this. - - name: Install .NET Runtime - run: | - # Example for Ubuntu. Adjust based on your .NET version (e.g., 8.0, 7.0) - # and if you need the SDK or just the runtime. - # This uses Microsoft's package repository for the latest versions. - wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb - sudo dpkg -i packages-microsoft-prod.deb - rm packages-microsoft-prod.deb - sudo apt update - sudo apt install -y aspnetcore-runtime-9.0 - - - name: Install and Start as a Linux service + Expand-Archive -Path messagingservice.zip -DestinationPath "C:\txnproc\transactionprocessing\messagingservice" -Force + + - name: Install as a Windows service run: | - SERVICE_NAME="messagingservice" - # The WorkingDirectory is crucial for .NET apps to find appsettings.json and other files - WORKING_DIRECTORY="/opt/txnproc/transactionprocessing/messagingservice" - DLL_NAME="MessagingService.dll" # Your application's DLL - SERVICE_DESCRIPTION="Transaction Processing - Messaging Service" - - # Create a systemd service file - echo "[Unit]" | sudo tee /etc/systemd/system/${SERVICE_NAME}.service - echo "Description=${SERVICE_DESCRIPTION}" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "After=network.target" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "[Service]" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - # IMPORTANT: Use 'dotnet' to run your DLL - echo "ExecStart=/usr/bin/dotnet ${WORKING_DIRECTORY}/${DLL_NAME}" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "WorkingDirectory=${WORKING_DIRECTORY}" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "Restart=always" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "User=youruser" # IMPORTANT: Change to a dedicated, less privileged user - echo "Group=yourgroup" # IMPORTANT: Change to a dedicated, less privileged group - echo "Environment=ASPNETCORE_ENVIRONMENT=Production" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service # Example - echo "" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "[Install]" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - echo "WantedBy=multi-user.target" | sudo tee -a /etc/systemd/system/${SERVICE_NAME}.service - - # Reload systemd, enable, and start the service - sudo systemctl daemon-reload - sudo systemctl enable "$SERVICE_NAME" - sudo systemctl start "$SERVICE_NAME" - sudo systemctl status "$SERVICE_NAME" --no-pager # For debugging/verification + $serviceName = "Transaction Processing - Messaging Service" + $servicePath = "C:\txnproc\transactionprocessing\messagingservice\MessagingService.exe" + + New-Service -Name $serviceName -BinaryPathName $servicePath -Description $serviceName -DisplayName $serviceName -StartupType Automatic + Start-Service -Name $serviceName diff --git a/.github/workflows/nightlybuild.yml b/.github/workflows/nightlybuild.yml index e57f12f..a8bbd44 100644 --- a/.github/workflows/nightlybuild.yml +++ b/.github/workflows/nightlybuild.yml @@ -15,11 +15,6 @@ jobs: steps: - uses: actions/checkout@v2.3.4 - - - name: Install NET 9 - uses: actions/setup-dotnet@v4.0.1 - with: - dotnet-version: '9.0.x' - name: Set Up Variables run: echo "action_url=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> $GITHUB_ENV diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 1900264..aa4676f 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -16,11 +16,6 @@ jobs: steps: - uses: actions/checkout@v2.3.4 - - name: Install NET 9 - uses: actions/setup-dotnet@v4.0.1 - with: - dotnet-version: '9.0.x' - - name: Restore Nuget Packages run: dotnet restore MessagingService.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }} diff --git a/.github/workflows/pushtomaster.yml b/.github/workflows/pushtomaster.yml index 25f4eb5..4825062 100644 --- a/.github/workflows/pushtomaster.yml +++ b/.github/workflows/pushtomaster.yml @@ -18,12 +18,7 @@ jobs: - uses: actions/checkout@v2.3.4 with: fetch-depth: 0 - - - name: Install NET 9 - uses: actions/setup-dotnet@v4.0.1 - with: - dotnet-version: '9.0.x' - + - name: Restore Nuget Packages run: dotnet restore MessagingService.sln --source ${{ secrets.PUBLICFEEDURL }} --source ${{ secrets.PRIVATEFEED_URL }} diff --git a/MessagingService.BusinessLogic.Tests/MessagingService.BusinessLogic.Tests.csproj b/MessagingService.BusinessLogic.Tests/MessagingService.BusinessLogic.Tests.csproj index 81aeaed..be0daab 100644 --- a/MessagingService.BusinessLogic.Tests/MessagingService.BusinessLogic.Tests.csproj +++ b/MessagingService.BusinessLogic.Tests/MessagingService.BusinessLogic.Tests.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 None false @@ -9,7 +9,7 @@ - + diff --git a/MessagingService.BusinessLogic/MessagingService.BusinessLogic.csproj b/MessagingService.BusinessLogic/MessagingService.BusinessLogic.csproj index c7b6d8e..82cacda 100644 --- a/MessagingService.BusinessLogic/MessagingService.BusinessLogic.csproj +++ b/MessagingService.BusinessLogic/MessagingService.BusinessLogic.csproj @@ -1,15 +1,15 @@  - net9.0 + net10.0 - - - - - + + + + + diff --git a/MessagingService.Client/MessagingService.Client.csproj b/MessagingService.Client/MessagingService.Client.csproj index 695911b..d5d591c 100644 --- a/MessagingService.Client/MessagingService.Client.csproj +++ b/MessagingService.Client/MessagingService.Client.csproj @@ -1,14 +1,14 @@  - net9.0 + net10.0 $(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets - + - + diff --git a/MessagingService.DataTransferObjects/MessagingService.DataTransferObjects.csproj b/MessagingService.DataTransferObjects/MessagingService.DataTransferObjects.csproj index 823bb04..bb14ca7 100644 --- a/MessagingService.DataTransferObjects/MessagingService.DataTransferObjects.csproj +++ b/MessagingService.DataTransferObjects/MessagingService.DataTransferObjects.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 diff --git a/MessagingService.EmailAggregate.Tests/MessagingService.EmailAggregate.Tests.csproj b/MessagingService.EmailAggregate.Tests/MessagingService.EmailAggregate.Tests.csproj index 4c243ef..8f856c6 100644 --- a/MessagingService.EmailAggregate.Tests/MessagingService.EmailAggregate.Tests.csproj +++ b/MessagingService.EmailAggregate.Tests/MessagingService.EmailAggregate.Tests.csproj @@ -1,14 +1,14 @@  - net9.0 + net10.0 None false - - + + diff --git a/MessagingService.EmailMessage.DomainEvents/MessagingService.EmailMessage.DomainEvents.csproj b/MessagingService.EmailMessage.DomainEvents/MessagingService.EmailMessage.DomainEvents.csproj index 7abb890..3c8a705 100644 --- a/MessagingService.EmailMessage.DomainEvents/MessagingService.EmailMessage.DomainEvents.csproj +++ b/MessagingService.EmailMessage.DomainEvents/MessagingService.EmailMessage.DomainEvents.csproj @@ -1,13 +1,13 @@  - net9.0 + net10.0 None - - + + diff --git a/MessagingService.EmailMessageAggregate/MessagingService.EmailMessageAggregate.csproj b/MessagingService.EmailMessageAggregate/MessagingService.EmailMessageAggregate.csproj index 6ee5073..b68b1e2 100644 --- a/MessagingService.EmailMessageAggregate/MessagingService.EmailMessageAggregate.csproj +++ b/MessagingService.EmailMessageAggregate/MessagingService.EmailMessageAggregate.csproj @@ -1,13 +1,13 @@  - net9.0 + net10.0 - - + + diff --git a/MessagingService.IntegrationTesting.Helpers/MessagingService.IntegrationTesting.Helpers.csproj b/MessagingService.IntegrationTesting.Helpers/MessagingService.IntegrationTesting.Helpers.csproj index ee9c882..a278d67 100644 --- a/MessagingService.IntegrationTesting.Helpers/MessagingService.IntegrationTesting.Helpers.csproj +++ b/MessagingService.IntegrationTesting.Helpers/MessagingService.IntegrationTesting.Helpers.csproj @@ -1,13 +1,13 @@  - net9.0 + net10.0 enable enable - + diff --git a/MessagingService.IntegrationTests/MessagingService.IntegrationTests.csproj b/MessagingService.IntegrationTests/MessagingService.IntegrationTests.csproj index dfebc63..fd8b292 100644 --- a/MessagingService.IntegrationTests/MessagingService.IntegrationTests.csproj +++ b/MessagingService.IntegrationTests/MessagingService.IntegrationTests.csproj @@ -1,22 +1,22 @@  - net9.0 + net10.0 false - + - - + + - - - + + + - + all diff --git a/MessagingService.Models/MessagingService.Models.csproj b/MessagingService.Models/MessagingService.Models.csproj index 811b815..b431671 100644 --- a/MessagingService.Models/MessagingService.Models.csproj +++ b/MessagingService.Models/MessagingService.Models.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 enable enable None diff --git a/MessagingService.SMSAggregate.Tests/MessagingService.SMSAggregate.Tests.csproj b/MessagingService.SMSAggregate.Tests/MessagingService.SMSAggregate.Tests.csproj index d357bb1..38303f4 100644 --- a/MessagingService.SMSAggregate.Tests/MessagingService.SMSAggregate.Tests.csproj +++ b/MessagingService.SMSAggregate.Tests/MessagingService.SMSAggregate.Tests.csproj @@ -1,13 +1,13 @@ - net9.0 + net10.0 None false - + diff --git a/MessagingService.SMSMessage.DomainEvents/MessagingService.SMSMessage.DomainEvents.csproj b/MessagingService.SMSMessage.DomainEvents/MessagingService.SMSMessage.DomainEvents.csproj index aa4d6a7..e4d030b 100644 --- a/MessagingService.SMSMessage.DomainEvents/MessagingService.SMSMessage.DomainEvents.csproj +++ b/MessagingService.SMSMessage.DomainEvents/MessagingService.SMSMessage.DomainEvents.csproj @@ -1,12 +1,12 @@  - net9.0 + net10.0 None - + diff --git a/MessagingService.SMSMessageAggregate/MessagingService.SMSMessageAggregate.csproj b/MessagingService.SMSMessageAggregate/MessagingService.SMSMessageAggregate.csproj index a7a7046..9fd07a6 100644 --- a/MessagingService.SMSMessageAggregate/MessagingService.SMSMessageAggregate.csproj +++ b/MessagingService.SMSMessageAggregate/MessagingService.SMSMessageAggregate.csproj @@ -1,12 +1,12 @@  - net9.0 + net10.0 - + diff --git a/MessagingService.Testing/MessagingService.Testing.csproj b/MessagingService.Testing/MessagingService.Testing.csproj index 466371f..d18a7d5 100644 --- a/MessagingService.Testing/MessagingService.Testing.csproj +++ b/MessagingService.Testing/MessagingService.Testing.csproj @@ -1,7 +1,7 @@ - net9.0 + net10.0 None diff --git a/MessagingService.Tests/MessagingService.Tests.csproj b/MessagingService.Tests/MessagingService.Tests.csproj index 8944057..de5e74a 100644 --- a/MessagingService.Tests/MessagingService.Tests.csproj +++ b/MessagingService.Tests/MessagingService.Tests.csproj @@ -1,16 +1,16 @@  - net9.0 + net10.0 None false - - - + + + diff --git a/MessagingService/Bootstrapper/MiddlewareRegistry.cs b/MessagingService/Bootstrapper/MiddlewareRegistry.cs index 295e79b..f1daab1 100644 --- a/MessagingService/Bootstrapper/MiddlewareRegistry.cs +++ b/MessagingService/Bootstrapper/MiddlewareRegistry.cs @@ -1,4 +1,6 @@ -using Microsoft.Extensions.Logging; +using KurrentDB.Client; +using Microsoft.Extensions.Logging; +using Microsoft.OpenApi; using Shared.Authorisation; namespace MessagingService.Bootstrapper @@ -6,24 +8,14 @@ namespace MessagingService.Bootstrapper using System; using System.IO; using System.Net.Http; - using System.Net.Security; - using System.Reflection; - using System.Threading.Tasks; - using System.Threading; using Common; - using EventStore.Client; using Lamar; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Diagnostics.HealthChecks; - using Microsoft.OpenApi.Models; - using Newtonsoft.Json; - using Newtonsoft.Json.Serialization; using Shared.EventStore.Extensions; using Shared.General; using Swashbuckle.AspNetCore.Filters; - using System.Collections.Generic; - using System.Linq; using System.Diagnostics.CodeAnalysis; using Microsoft.Extensions.Configuration; using Shared.Middleware; @@ -36,7 +28,7 @@ public class MiddlewareRegistry : ServiceRegistry public MiddlewareRegistry() { String connectionString = Startup.Configuration.GetValue("EventStoreSettings:ConnectionString"); - EventStoreClientSettings eventStoreConnectionSettings = EventStoreClientSettings.Create(connectionString); + KurrentDBClientSettings eventStoreConnectionSettings = KurrentDBClientSettings.Create(connectionString); this.AddHealthChecks() .AddEventStore(eventStoreConnectionSettings, diff --git a/MessagingService/Bootstrapper/RepositoryRegistry.cs b/MessagingService/Bootstrapper/RepositoryRegistry.cs index 17600ba..1368478 100644 --- a/MessagingService/Bootstrapper/RepositoryRegistry.cs +++ b/MessagingService/Bootstrapper/RepositoryRegistry.cs @@ -23,16 +23,16 @@ public RepositoryRegistry() { String connectionString = Startup.Configuration.GetValue("EventStoreSettings:ConnectionString"); - this.AddEventStoreProjectionManagementClient(connectionString); - this.AddEventStorePersistentSubscriptionsClient(connectionString); + this.AddKurrentDBPersistentSubscriptionsClient(connectionString); + this.AddKurrentDBProjectionManagementClient(connectionString); - this.AddEventStoreClient(connectionString); + this.AddKurrentDBClient(connectionString); this.AddTransient(); this.AddSingleton, AggregateRepository>(); this.AddSingleton, AggregateRepository>(); - this.AddSingleton>(cont => (esConnString, cacheDuration) => SubscriptionRepository.Create(esConnString, cacheDuration)); + this.AddSingleton>(cont => SubscriptionRepository.Create); } } \ No newline at end of file diff --git a/MessagingService/Common/SwaggerDefaultValues.cs b/MessagingService/Common/SwaggerDefaultValues.cs index fdee1b1..6e86ce3 100644 --- a/MessagingService/Common/SwaggerDefaultValues.cs +++ b/MessagingService/Common/SwaggerDefaultValues.cs @@ -1,9 +1,10 @@ -namespace MessagingService.Common +using Microsoft.OpenApi; + +namespace MessagingService.Common { using System.Diagnostics.CodeAnalysis; using System.Linq; using Microsoft.AspNetCore.Mvc.ApiExplorer; - using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen; /// diff --git a/MessagingService/Dockerfile b/MessagingService/Dockerfile index 12c0919..7576a46 100644 --- a/MessagingService/Dockerfile +++ b/MessagingService/Dockerfile @@ -3,7 +3,7 @@ FROM stuartferguson/txnprocbase AS base WORKDIR /app -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build # Set the ARG for your GitHub Secret ARG NUGET_TOKEN diff --git a/MessagingService/MessagingService.csproj b/MessagingService/MessagingService.csproj index 8b2a8d5..0636f16 100644 --- a/MessagingService/MessagingService.csproj +++ b/MessagingService/MessagingService.csproj @@ -1,7 +1,7 @@  - net9.0 + net10.0 Linux @@ -14,25 +14,25 @@ - - - + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + +