From 4ad5c7614012836f7d6aaa056320f140af4077a5 Mon Sep 17 00:00:00 2001 From: Carl Reid Date: Thu, 13 Feb 2025 19:04:12 +0100 Subject: [PATCH] chore: Update to .NET 9 This builds, but unsure of runtime issues because there's 0 tests --- BuildClientAPI/BuildClientAPI.csproj | 6 +-- Dockerfile.base | 2 +- Dockerfile.build | 2 +- StreamMaster.API/GlobalUsings.cs | 2 - StreamMaster.API/Program.cs | 23 +++++--- StreamMaster.API/StreamMaster.API.csproj | 20 +++---- StreamMaster.Application/GlobalUsings.cs | 4 +- .../GetPagedStationChannelNameSelections.cs | 1 + .../StreamMaster.Application.csproj | 14 +++-- StreamMaster.Domain/API/PagedResponse.cs | 1 + .../Extensions/PagedExtensions.cs | 4 +- StreamMaster.Domain/GlobalUsings.cs | 4 +- .../Repository/IRepositoryBase.cs | 4 +- .../Repository/IRepositoryContext.cs | 1 - .../StreamMaster.Domain.csproj | 27 +++++----- .../BaseRepositoryContext.cs | 25 ++++----- ...StreamMaster.Infrastructure.EF.Base.csproj | 9 ++-- ...treamMaster.Infrastructure.EF.PGSQL.csproj | 20 ++++--- .../GlobalUsings.cs | 2 - .../Repositories/RepositoryBase.cs | 54 ++----------------- .../Repositories/SMChannelsRepository.cs | 51 ++++++++++++++---- .../StreamMaster.Infrastructure.EF.csproj | 6 +-- .../StreamMaster.Infrastructure.csproj | 13 +++-- .../StreamMaster.Logging.csproj | 2 +- .../StreamMaster.PlayList.csproj | 5 +- ...StreamMaster.SchedulesDirect.Domain.csproj | 9 ++-- ...reamMaster.SchedulesDirect.Services.csproj | 5 +- .../StreamMaster.SchedulesDirect.csproj | 7 ++- .../StreamMaster.Streams.Domain.csproj | 7 ++- .../StreamMaster.Streams.csproj | 11 ++-- 30 files changed, 148 insertions(+), 193 deletions(-) diff --git a/BuildClientAPI/BuildClientAPI.csproj b/BuildClientAPI/BuildClientAPI.csproj index eabf406ef..daa72138e 100644 --- a/BuildClientAPI/BuildClientAPI.csproj +++ b/BuildClientAPI/BuildClientAPI.csproj @@ -2,15 +2,11 @@ Exe - net8.0 + net9.0 enable enable - - - - diff --git a/Dockerfile.base b/Dockerfile.base index 8579748a5..af60f94a7 100644 --- a/Dockerfile.base +++ b/Dockerfile.base @@ -1,5 +1,5 @@ # Set the base image for the ASP.NET Core application -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base # Define build-time arguments for platform and architecture ARG TARGETARCH diff --git a/Dockerfile.build b/Dockerfile.build index f6cee3c3e..e5868d428 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build ARG TARGETPLATFORM ARG TARGETOS ARG TARGETARCH diff --git a/StreamMaster.API/GlobalUsings.cs b/StreamMaster.API/GlobalUsings.cs index 58974d2ae..bee42f3b9 100644 --- a/StreamMaster.API/GlobalUsings.cs +++ b/StreamMaster.API/GlobalUsings.cs @@ -13,5 +13,3 @@ global using StreamMaster.Domain.Services; global using StreamMaster.Streams.Domain.Interfaces; global using StreamMaster.Streams.Domain.Models; - -global using X.PagedList; diff --git a/StreamMaster.API/Program.cs b/StreamMaster.API/Program.cs index 21475a9e4..7766bbd85 100644 --- a/StreamMaster.API/Program.cs +++ b/StreamMaster.API/Program.cs @@ -319,23 +319,32 @@ static string GetRoutePattern(Endpoint endpoint) : ""; } -static X509Certificate2 ValidateSslCertificate(string cert, string password) +static X509Certificate2 ValidateSslCertificate(string certPath, string password) { - X509Certificate2 certificate; - try { - certificate = new X509Certificate2(cert, password, X509KeyStorageFlags.DefaultKeySet); + var limits = new Pkcs12LoaderLimits(); + var certificate = X509CertificateLoader.LoadPkcs12FromFile( + certPath, + password, + X509KeyStorageFlags.DefaultKeySet, + limits); + + return certificate == null ? throw new CryptographicException("No valid certificate found in the file.") : certificate; + } + catch (FileNotFoundException) + { + throw new Exception($"The SSL certificate file {certPath} does not exist."); } catch (CryptographicException ex) { if (ex.HResult is 0x2 or 0x2006D080) { - throw new Exception($"The SSL certificate file {cert} does not exist: {ex.Message}"); + throw new Exception($"The SSL certificate file {certPath} does not exist: {ex.Message}"); } throw; } +} + - return certificate; -} \ No newline at end of file diff --git a/StreamMaster.API/StreamMaster.API.csproj b/StreamMaster.API/StreamMaster.API.csproj index 8b817c960..b2bdeb0d7 100644 --- a/StreamMaster.API/StreamMaster.API.csproj +++ b/StreamMaster.API/StreamMaster.API.csproj @@ -1,6 +1,6 @@  - net8.0 + net9.0 enable enable ASP0023 @@ -52,17 +52,13 @@ - - - - - - - - - - - + + + + + + + diff --git a/StreamMaster.Application/GlobalUsings.cs b/StreamMaster.Application/GlobalUsings.cs index 796d93f8c..234cd0f4e 100644 --- a/StreamMaster.Application/GlobalUsings.cs +++ b/StreamMaster.Application/GlobalUsings.cs @@ -39,6 +39,4 @@ global using StreamMaster.SchedulesDirect.Domain.XmltvXml; global using StreamMaster.Streams.Domain.Interfaces; global using StreamMaster.Streams.Domain.Models; -global using StreamMaster.Streams.Domain.Statistics; - -global using X.PagedList; \ No newline at end of file +global using StreamMaster.Streams.Domain.Statistics; \ No newline at end of file diff --git a/StreamMaster.Application/SchedulesDirect/Queries/GetPagedStationChannelNameSelections.cs b/StreamMaster.Application/SchedulesDirect/Queries/GetPagedStationChannelNameSelections.cs index ecc484069..814dd44b7 100644 --- a/StreamMaster.Application/SchedulesDirect/Queries/GetPagedStationChannelNameSelections.cs +++ b/StreamMaster.Application/SchedulesDirect/Queries/GetPagedStationChannelNameSelections.cs @@ -3,6 +3,7 @@ using System.Text.Json; using X.Extensions.PagedList.EF; +using X.PagedList; namespace StreamMaster.Application.SchedulesDirect.Queries; diff --git a/StreamMaster.Application/StreamMaster.Application.csproj b/StreamMaster.Application/StreamMaster.Application.csproj index 09f7679d3..1f58a22ba 100644 --- a/StreamMaster.Application/StreamMaster.Application.csproj +++ b/StreamMaster.Application/StreamMaster.Application.csproj @@ -1,6 +1,6 @@  - net8.0 + net9.0 enable enable AnyCPU;ARM64 @@ -66,13 +66,11 @@ - - - - - - - + + + + + diff --git a/StreamMaster.Domain/API/PagedResponse.cs b/StreamMaster.Domain/API/PagedResponse.cs index 9bf01865c..daf5e84da 100644 --- a/StreamMaster.Domain/API/PagedResponse.cs +++ b/StreamMaster.Domain/API/PagedResponse.cs @@ -5,6 +5,7 @@ using StreamMaster.Domain.Attributes; using System.Xml.Serialization; +using X.PagedList; namespace StreamMaster.Domain.API; diff --git a/StreamMaster.Domain/Extensions/PagedExtensions.cs b/StreamMaster.Domain/Extensions/PagedExtensions.cs index cf8103c6b..f725bf021 100644 --- a/StreamMaster.Domain/Extensions/PagedExtensions.cs +++ b/StreamMaster.Domain/Extensions/PagedExtensions.cs @@ -1,11 +1,9 @@ using AutoMapper; - using Microsoft.EntityFrameworkCore; - using StreamMaster.Domain.API; using StreamMaster.Domain.Filtering; - using X.Extensions.PagedList.EF; +using X.PagedList; namespace StreamMaster.Domain.Extensions; public static class PagedExtensions diff --git a/StreamMaster.Domain/GlobalUsings.cs b/StreamMaster.Domain/GlobalUsings.cs index fa014ad77..826b0eaa6 100644 --- a/StreamMaster.Domain/GlobalUsings.cs +++ b/StreamMaster.Domain/GlobalUsings.cs @@ -7,6 +7,4 @@ global using StreamMaster.Domain.Dto; global using StreamMaster.Domain.Enums; global using StreamMaster.Domain.Mappings; -global using StreamMaster.Domain.Models; - -global using X.PagedList; +global using StreamMaster.Domain.Models; \ No newline at end of file diff --git a/StreamMaster.Domain/Repository/IRepositoryBase.cs b/StreamMaster.Domain/Repository/IRepositoryBase.cs index b79e4a26d..8a347d7c3 100644 --- a/StreamMaster.Domain/Repository/IRepositoryBase.cs +++ b/StreamMaster.Domain/Repository/IRepositoryBase.cs @@ -77,10 +77,8 @@ public interface IRepositoryBase where T : class /// Performs a bulk update operation. /// /// Entities to update. - void BulkUpdate(T[] entities); - - void BulkUpdate(List entities); Task BulkUpdateAsync(IEnumerable entities) where TEntity : class; + /// /// Performs a bulk delete operation based on the provided query. /// diff --git a/StreamMaster.Domain/Repository/IRepositoryContext.cs b/StreamMaster.Domain/Repository/IRepositoryContext.cs index 6d54a9b25..4ecdda998 100644 --- a/StreamMaster.Domain/Repository/IRepositoryContext.cs +++ b/StreamMaster.Domain/Repository/IRepositoryContext.cs @@ -18,7 +18,6 @@ public interface IRepositoryContext Task BulkInsertEntitiesAsync(IEnumerable entities) where TEntity : class; int ExecuteSqlRaw(string sql, params object[] parameters); Task ExecuteSqlRawAsync(string sql, CancellationToken cancellationToken = default); - void BulkUpdateEntities(IEnumerable entities) where TEntity : class; void BulkInsertEntities(IEnumerable entities) where TEntity : class; Task BulkDeleteAsyncEntities(IQueryable entities, CancellationToken cancellationToken = default) where TEntity : class; DbSet ChannelGroups diff --git a/StreamMaster.Domain/StreamMaster.Domain.csproj b/StreamMaster.Domain/StreamMaster.Domain.csproj index 774cba057..585804b43 100644 --- a/StreamMaster.Domain/StreamMaster.Domain.csproj +++ b/StreamMaster.Domain/StreamMaster.Domain.csproj @@ -1,6 +1,6 @@  - net8.0 + net9.0 enable enable AnyCPU;ARM64 @@ -27,20 +27,19 @@ - - + - - - - - - - - - - + + + + + + + + + + - + \ No newline at end of file diff --git a/StreamMaster.Infrastructure.EF.Base/BaseRepositoryContext.cs b/StreamMaster.Infrastructure.EF.Base/BaseRepositoryContext.cs index a1813fb05..48bd88bfe 100644 --- a/StreamMaster.Infrastructure.EF.Base/BaseRepositoryContext.cs +++ b/StreamMaster.Infrastructure.EF.Base/BaseRepositoryContext.cs @@ -1,11 +1,9 @@ -using EFCore.BulkExtensions; - -using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; -using Microsoft.Data.Sqlite; +using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.Data.Sqlite; namespace StreamMaster.Infrastructure.EF.Base; @@ -50,28 +48,27 @@ public Task BeginTransactionAsync(CancellationToken cance return Database.BeginTransactionAsync(cancellationToken); } - public void BulkUpdateEntities(IEnumerable entities) where TEntity : class - { - this.BulkUpdate(entities); - } - public void BulkInsertEntities(IEnumerable entities) where TEntity : class { - this.BulkInsert(entities); + AddRange(entities); + SaveChanges(); } public async Task BulkInsertEntitiesAsync(IEnumerable entities) where TEntity : class { - await this.BulkInsertAsync(entities); + await AddRangeAsync(entities); + await SaveChangesAsync(); } public async Task BulkUpdateAsync(IEnumerable entities) where TEntity : class { - await BulkUpdateAsync(entities); + UpdateRange(entities); + await SaveChangesAsync(); } + public Task BulkDeleteAsyncEntities(IQueryable entities, CancellationToken cancellationToken = default) where TEntity : class { - return entities.ExecuteDeleteAsync(cancellationToken); + return EntityFrameworkQueryableExtensions.ExecuteDeleteAsync(entities, cancellationToken); } public bool IsEntityTracked(TEntity entity) where TEntity : class diff --git a/StreamMaster.Infrastructure.EF.Base/StreamMaster.Infrastructure.EF.Base.csproj b/StreamMaster.Infrastructure.EF.Base/StreamMaster.Infrastructure.EF.Base.csproj index 7f433c088..d115ba230 100644 --- a/StreamMaster.Infrastructure.EF.Base/StreamMaster.Infrastructure.EF.Base.csproj +++ b/StreamMaster.Infrastructure.EF.Base/StreamMaster.Infrastructure.EF.Base.csproj @@ -1,15 +1,16 @@  - net8.0 + net9.0 enable enable - - - + + + + diff --git a/StreamMaster.Infrastructure.EF.PGSQL/StreamMaster.Infrastructure.EF.PGSQL.csproj b/StreamMaster.Infrastructure.EF.PGSQL/StreamMaster.Infrastructure.EF.PGSQL.csproj index 7239b6246..ce1ff6e7e 100644 --- a/StreamMaster.Infrastructure.EF.PGSQL/StreamMaster.Infrastructure.EF.PGSQL.csproj +++ b/StreamMaster.Infrastructure.EF.PGSQL/StreamMaster.Infrastructure.EF.PGSQL.csproj @@ -1,6 +1,6 @@ - + - net8.0 + net9.0 enable enable @@ -14,21 +14,19 @@ - - - - + + + - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - diff --git a/StreamMaster.Infrastructure.EF/GlobalUsings.cs b/StreamMaster.Infrastructure.EF/GlobalUsings.cs index cda9a0cb6..0f0a424b9 100644 --- a/StreamMaster.Infrastructure.EF/GlobalUsings.cs +++ b/StreamMaster.Infrastructure.EF/GlobalUsings.cs @@ -11,5 +11,3 @@ global using StreamMaster.Domain.Pagination; global using StreamMaster.Domain.Repository; global using StreamMaster.Domain.Services; - -global using X.PagedList; diff --git a/StreamMaster.Infrastructure.EF/Repositories/RepositoryBase.cs b/StreamMaster.Infrastructure.EF/Repositories/RepositoryBase.cs index 38521e300..f1932126a 100644 --- a/StreamMaster.Infrastructure.EF/Repositories/RepositoryBase.cs +++ b/StreamMaster.Infrastructure.EF/Repositories/RepositoryBase.cs @@ -1,6 +1,4 @@ -using EFCore.BulkExtensions; - -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using StreamMaster.Domain.Filtering; @@ -229,34 +227,6 @@ public void BulkInsert(T[] entities) RepositoryContext.BulkInsertEntities(entities); } - /// - /// Deletes a group of entities based on a query. - /// - /// The IQueryable to select entities to be deleted. - public void BulkDelete(IQueryable query) - { - if (query?.Any() != true) - { - logger.LogWarning("Attempted to perform a bulk delete with a null or empty query."); - throw new ArgumentNullException(nameof(query)); - } - DbContext? context = RepositoryContext as DbContext; - - context!.BulkDelete(query); - } - - public void BulkDelete(List items) - { - if (items == null || items.Count == 0) - { - logger.LogWarning("Attempted to perform a bulk delete with a null or empty query."); - throw new ArgumentNullException(nameof(items)); - } - DbContext? context = RepositoryContext as DbContext; - - context!.BulkDelete(items); - } - /// /// Deletes a group of entities based on a query. /// @@ -276,26 +246,15 @@ public async Task BulkDeleteAsync(IQueryable query) /// Performs a bulk update on a set of entities. /// /// Entities to be updated. - public void BulkUpdate(T[] entities) - { - if (entities == null || entities.Length == 0) - { - logger.LogWarning("Attempted to perform a bulk update with null or empty entities."); - throw new ArgumentNullException(nameof(entities)); - } - - RepositoryContext.BulkUpdateEntities(entities); - } - - public void BulkUpdate(List entities) + public async Task BulkUpdateAsync(IEnumerable entities) where TEntity : class { - if (entities == null || entities.Count == 0) + if (entities == null || !entities.Any()) { logger.LogWarning("Attempted to perform a bulk update with null or empty entities."); throw new ArgumentNullException(nameof(entities)); } - RepositoryContext.BulkUpdateEntities(entities); + await RepositoryContext.BulkUpdateAsync(entities); } /// @@ -328,10 +287,5 @@ public async Task BulkInsertEntitiesAsync(IEnumerable entities await RepositoryContext.BulkInsertEntitiesAsync(entities); } - public async Task BulkUpdateAsync(IEnumerable entities) where TEntity : class - { - await RepositoryContext.BulkUpdateAsync(entities); - } - #endregion } \ No newline at end of file diff --git a/StreamMaster.Infrastructure.EF/Repositories/SMChannelsRepository.cs b/StreamMaster.Infrastructure.EF/Repositories/SMChannelsRepository.cs index 09cad5c76..3476d98f7 100644 --- a/StreamMaster.Infrastructure.EF/Repositories/SMChannelsRepository.cs +++ b/StreamMaster.Infrastructure.EF/Repositories/SMChannelsRepository.cs @@ -675,7 +675,7 @@ private async Task AutoSetSMChannelNumbers(IQueryable addedSMChannels, int? defaultSGId) + private async Task BulkUpdate(List addedSMChannels, int? defaultSGId = null) { for (int i = 0; i < addedSMChannels.Count; i += settings.CurrentValue.DBBatchSize) { @@ -738,6 +738,31 @@ private async Task BulkUpdate(List addedSMChannels, int? defaultSGId) return smChannel; } + //[LogExecutionTimeAspect] + //private async Task> DeleteSMChannelsAsync(IQueryable channels) + //{ + // if (!channels.Any()) + // { + // return []; + // } + // try + // { + // List a = [.. channels]; + // List ret = [.. a.Select(a => a.Id)]; + // IQueryable linksToDelete = repository.SMChannelStreamLink.GetQuery(true).Where(a => ret.Contains(a.SMChannelId)); + // await repository.SMChannelStreamLink.DeleteSMChannelStreamLinks(linksToDelete); + // _ = await SaveChangesAsync(); + // BulkDelete(a); + // _ = await SaveChangesAsync(); + // return ret; + // } + // catch (Exception ex) + // { + // logger.LogError(ex, "Error deleting SMChannels"); + // } + // return []; + //} + [LogExecutionTimeAspect] private async Task> DeleteSMChannelsAsync(IQueryable channels) { @@ -747,22 +772,28 @@ private async Task> DeleteSMChannelsAsync(IQueryable channe } try { - List a = [.. channels]; - List ret = [.. a.Select(a => a.Id)]; - IQueryable linksToDelete = repository.SMChannelStreamLink.GetQuery(true).Where(a => ret.Contains(a.SMChannelId)); + List channelIds = await channels.Select(channel => channel.Id).ToListAsync(); + + IQueryable linksToDelete = repository.SMChannelStreamLink + .GetQuery(true) + .Where(link => channelIds.Contains(link.SMChannelId)); + await repository.SMChannelStreamLink.DeleteSMChannelStreamLinks(linksToDelete); - _ = await SaveChangesAsync(); - BulkDelete(a); - _ = await SaveChangesAsync(); - return ret; + await SaveChangesAsync(); + + await BulkDeleteAsync(channels); + await SaveChangesAsync(); + + return channelIds; } catch (Exception ex) { logger.LogError(ex, "Error deleting SMChannels"); + return []; } - return []; } + private string GetName(SMStream smStream) { M3UField? m3uName = repository.M3UFile.GetQuery().FirstOrDefault(a => a.Id == smStream.M3UFileId)?.M3UName; @@ -878,7 +909,7 @@ private async Task SetSMChannelsGroup(IQueryable query, smChannl.Group = group.Name; } - BulkUpdate(toUpdate); + await BulkUpdate(toUpdate); _ = RepositoryContext.SaveChanges(); return APIResponse.Success; } diff --git a/StreamMaster.Infrastructure.EF/StreamMaster.Infrastructure.EF.csproj b/StreamMaster.Infrastructure.EF/StreamMaster.Infrastructure.EF.csproj index 24ba3d68a..80ea5c916 100644 --- a/StreamMaster.Infrastructure.EF/StreamMaster.Infrastructure.EF.csproj +++ b/StreamMaster.Infrastructure.EF/StreamMaster.Infrastructure.EF.csproj @@ -1,15 +1,11 @@  - net8.0 + net9.0 enable enable - - - - diff --git a/StreamMaster.Infrastructure/StreamMaster.Infrastructure.csproj b/StreamMaster.Infrastructure/StreamMaster.Infrastructure.csproj index 621982695..4d7d54f26 100644 --- a/StreamMaster.Infrastructure/StreamMaster.Infrastructure.csproj +++ b/StreamMaster.Infrastructure/StreamMaster.Infrastructure.csproj @@ -1,6 +1,6 @@  - net8.0 + net9.0 enable enable AnyCPU;ARM64 @@ -23,18 +23,17 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + diff --git a/StreamMaster.Logging/StreamMaster.Logging.csproj b/StreamMaster.Logging/StreamMaster.Logging.csproj index fa71b7ae6..125f4c93b 100644 --- a/StreamMaster.Logging/StreamMaster.Logging.csproj +++ b/StreamMaster.Logging/StreamMaster.Logging.csproj @@ -1,7 +1,7 @@  - net8.0 + net9.0 enable enable diff --git a/StreamMaster.PlayList/StreamMaster.PlayList.csproj b/StreamMaster.PlayList/StreamMaster.PlayList.csproj index 69f3b19dc..d4afaa4ff 100644 --- a/StreamMaster.PlayList/StreamMaster.PlayList.csproj +++ b/StreamMaster.PlayList/StreamMaster.PlayList.csproj @@ -1,14 +1,13 @@  - net8.0 + net9.0 enable enable - - + diff --git a/StreamMaster.SchedulesDirect.Domain/StreamMaster.SchedulesDirect.Domain.csproj b/StreamMaster.SchedulesDirect.Domain/StreamMaster.SchedulesDirect.Domain.csproj index acfdb288a..d23065d1c 100644 --- a/StreamMaster.SchedulesDirect.Domain/StreamMaster.SchedulesDirect.Domain.csproj +++ b/StreamMaster.SchedulesDirect.Domain/StreamMaster.SchedulesDirect.Domain.csproj @@ -1,6 +1,6 @@ - net8.0 + net9.0 enable enable @@ -14,10 +14,9 @@ - - - - + + + diff --git a/StreamMaster.SchedulesDirect.Services/StreamMaster.SchedulesDirect.Services.csproj b/StreamMaster.SchedulesDirect.Services/StreamMaster.SchedulesDirect.Services.csproj index da31994b8..74041d7e0 100644 --- a/StreamMaster.SchedulesDirect.Services/StreamMaster.SchedulesDirect.Services.csproj +++ b/StreamMaster.SchedulesDirect.Services/StreamMaster.SchedulesDirect.Services.csproj @@ -1,6 +1,6 @@ - net8.0 + net9.0 enable enable @@ -8,9 +8,6 @@ - - - diff --git a/StreamMaster.SchedulesDirect/StreamMaster.SchedulesDirect.csproj b/StreamMaster.SchedulesDirect/StreamMaster.SchedulesDirect.csproj index 2b16a61f0..e83353062 100644 --- a/StreamMaster.SchedulesDirect/StreamMaster.SchedulesDirect.csproj +++ b/StreamMaster.SchedulesDirect/StreamMaster.SchedulesDirect.csproj @@ -1,14 +1,13 @@  - net8.0 + net9.0 enable enable - - - + + diff --git a/StreamMaster.Streams.Domain/StreamMaster.Streams.Domain.csproj b/StreamMaster.Streams.Domain/StreamMaster.Streams.Domain.csproj index 6171137d0..9438a2227 100644 --- a/StreamMaster.Streams.Domain/StreamMaster.Streams.Domain.csproj +++ b/StreamMaster.Streams.Domain/StreamMaster.Streams.Domain.csproj @@ -1,7 +1,7 @@  - net8.0 + net9.0 enable enable @@ -18,9 +18,8 @@ - - - + + diff --git a/StreamMaster.Streams/StreamMaster.Streams.csproj b/StreamMaster.Streams/StreamMaster.Streams.csproj index 20ce95162..aace69c69 100644 --- a/StreamMaster.Streams/StreamMaster.Streams.csproj +++ b/StreamMaster.Streams/StreamMaster.Streams.csproj @@ -1,20 +1,19 @@  - net8.0 + net9.0 enable enable - + - - - - + + +