diff --git a/.editorconfig b/.editorconfig index 34f2665..b23e35c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -259,6 +259,8 @@ csharp_style_prefer_utf8_string_literals = true:warning csharp_style_prefer_readonly_struct = true:warning csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent +csharp_style_prefer_primary_constructors = true:suggestion +csharp_style_prefer_readonly_struct_member = true:suggestion [*.{cs,vb}] dotnet_style_operator_placement_when_wrapping = beginning_of_line @@ -295,4 +297,5 @@ dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:sil dotnet_style_qualification_for_field = false:silent dotnet_style_qualification_for_property = false:silent dotnet_style_qualification_for_method = false:silent -dotnet_style_qualification_for_event = false:silent +dotnet_style_qualification_for_event = false:silent +dotnet_style_prefer_collection_expression = true:warning \ No newline at end of file diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index dce1a13..1d807a2 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -17,7 +17,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 7.x + dotnet-version: 8.x # Generate the website - name: Install wasm tool diff --git a/Memento.sln b/Memento.sln index 454fe6d..543d5e8 100644 --- a/Memento.sln +++ b/Memento.sln @@ -11,6 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_root", "_root", "{E9CA5D2D ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig .gitignore = .gitignore + .github\workflows\build-and-deploy.yml = .github\workflows\build-and-deploy.yml src\Directory.Build.props = src\Directory.Build.props README.md = README.md EndProjectSection diff --git a/samples/Memento.Sample.Blazor/Memento.Sample.Blazor.csproj b/samples/Memento.Sample.Blazor/Memento.Sample.Blazor.csproj index a4e950b..41ccbc4 100644 --- a/samples/Memento.Sample.Blazor/Memento.Sample.Blazor.csproj +++ b/samples/Memento.Sample.Blazor/Memento.Sample.Blazor.csproj @@ -1,14 +1,14 @@ - + - net7.0 + net8.0 enable enable / - + diff --git a/samples/Memento.Sample.Blazor/Stores/FluxRedoUndoTodoStore.cs b/samples/Memento.Sample.Blazor/Stores/FluxRedoUndoTodoStore.cs index 2f52999..8691a7c 100644 --- a/samples/Memento.Sample.Blazor/Stores/FluxRedoUndoTodoStore.cs +++ b/samples/Memento.Sample.Blazor/Stores/FluxRedoUndoTodoStore.cs @@ -1,4 +1,3 @@ -using Memento.Core.History; using Memento.Sample.Blazor.Todos; using System.Collections.Immutable; diff --git a/samples/Memento.Sample.Blazor/Stores/RedoUndoTodoStore.cs b/samples/Memento.Sample.Blazor/Stores/RedoUndoTodoStore.cs index 68a5663..daff3cc 100644 --- a/samples/Memento.Sample.Blazor/Stores/RedoUndoTodoStore.cs +++ b/samples/Memento.Sample.Blazor/Stores/RedoUndoTodoStore.cs @@ -1,4 +1,3 @@ -using Memento.Core.History; using Memento.Sample.Blazor.Todos; using System.Collections.Immutable; diff --git a/samples/Memento.Sample.BlazorServer/LoggerMiddleware.cs b/samples/Memento.Sample.BlazorServer/LoggerMiddleware.cs index 3f7bebb..bf5711d 100644 --- a/samples/Memento.Sample.BlazorServer/LoggerMiddleware.cs +++ b/samples/Memento.Sample.BlazorServer/LoggerMiddleware.cs @@ -39,7 +39,11 @@ public LoggerMiddlewareHandler(IJSRuntime jSRuntime) { /// The state change event arguments. /// The next middleware in the pipeline. /// The updated state after processing by the middleware pipeline. - public override RootState? HandleProviderDispatch(RootState? state, IStateChangedEventArgs e, NextProviderMiddlewareCallback next) { + public override RootState? HandleProviderDispatch( + RootState? state, + IStateChangedEventArgs e, + NextProviderMiddlewareCallback next + ) { _ = HandleLog(state, e); return next(state, e); } diff --git a/samples/Memento.Sample.BlazorServer/Memento.Sample.BlazorServer.csproj b/samples/Memento.Sample.BlazorServer/Memento.Sample.BlazorServer.csproj index 31f126e..0dbe28f 100644 --- a/samples/Memento.Sample.BlazorServer/Memento.Sample.BlazorServer.csproj +++ b/samples/Memento.Sample.BlazorServer/Memento.Sample.BlazorServer.csproj @@ -1,7 +1,7 @@ - net7.0 + net8.0 enable enable diff --git a/samples/Memento.Sample.BlazorServer/Program.cs b/samples/Memento.Sample.BlazorServer/Program.cs index d8f9c34..fa56abf 100644 --- a/samples/Memento.Sample.BlazorServer/Program.cs +++ b/samples/Memento.Sample.BlazorServer/Program.cs @@ -6,8 +6,8 @@ var builder = WebApplication.CreateBuilder(args); builder.Services - .AddRemoteReduxDevToolMiddleware() - .AddMemento() + .AddRemoteReduxDevToolMiddleware(true) + .AddMemento(true) .AddMiddleware(() => new LoggerMiddleware()) .ScanAssemblyAndAddStores(typeof(App).Assembly); diff --git a/samples/Memento.Sample.BlazorWasm/Memento.Sample.BlazorWasm.csproj b/samples/Memento.Sample.BlazorWasm/Memento.Sample.BlazorWasm.csproj index 3fdcd4e..cdd050a 100644 --- a/samples/Memento.Sample.BlazorWasm/Memento.Sample.BlazorWasm.csproj +++ b/samples/Memento.Sample.BlazorWasm/Memento.Sample.BlazorWasm.csproj @@ -1,6 +1,6 @@ - + - net7.0 + net8.0 enable enable @@ -8,9 +8,9 @@ - - - + + + diff --git a/samples/Memento.Sample.BlazorWasm/Program.cs b/samples/Memento.Sample.BlazorWasm/Program.cs index 6c8ccb8..6d80dc0 100644 --- a/samples/Memento.Sample.BlazorWasm/Program.cs +++ b/samples/Memento.Sample.BlazorWasm/Program.cs @@ -18,7 +18,7 @@ .AddBrowserReduxDevToolMiddleware(new() { StackTraceEnabled = true, OpenDevTool = true, - + }) .ScanAssemblyAndAddStores(typeof(App).Assembly); diff --git a/samples/Memento.Sample.ConsoleApp/Memento.Sample.ConsoleApp.csproj b/samples/Memento.Sample.ConsoleApp/Memento.Sample.ConsoleApp.csproj index 482c025..b758019 100644 --- a/samples/Memento.Sample.ConsoleApp/Memento.Sample.ConsoleApp.csproj +++ b/samples/Memento.Sample.ConsoleApp/Memento.Sample.ConsoleApp.csproj @@ -2,13 +2,13 @@ Exe - net7.0 + net8.0 enable enable - + diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 8adc32c..da53c3b 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,6 @@ - net7.0;net6.0 + net8.0;net7.0;net6.0 latest diff --git a/src/Memento.Blazor/ComponentUtils.cs b/src/Memento.Blazor/ComponentUtils.cs index 90fd92b..d8c4b9a 100644 --- a/src/Memento.Blazor/ComponentUtils.cs +++ b/src/Memento.Blazor/ComponentUtils.cs @@ -46,7 +46,7 @@ private static IEnumerable GetStateChangedNotifierProperties(Type : GetStateChangedNotifierProperties(t.BaseType!) .Union( t.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly) - .Where(p => typeof(IStore).IsAssignableFrom(p.PropertyType)) + .Where(p => typeof(IStore).IsAssignableFrom(p.PropertyType)) ); private static IEnumerable GetStateChangedNotifierPropertyDelegatesForType(Type type) diff --git a/src/Memento.Blazor/Memento.Blazor.csproj b/src/Memento.Blazor/Memento.Blazor.csproj index d77cadf..e6e279f 100644 --- a/src/Memento.Blazor/Memento.Blazor.csproj +++ b/src/Memento.Blazor/Memento.Blazor.csproj @@ -2,7 +2,11 @@ enable enable - + + + + + diff --git a/src/Memento.Blazor/StoreConfigExtension.cs b/src/Memento.Blazor/StoreConfigExtension.cs index e2087a8..694bc7a 100644 --- a/src/Memento.Blazor/StoreConfigExtension.cs +++ b/src/Memento.Blazor/StoreConfigExtension.cs @@ -29,14 +29,14 @@ public static IServiceCollection AddMemento(this IServiceCollection services, bo /// If true, registers the store with a scoped lifetime. Otherwise, registers with a singleton lifetime. /// >The registered IServiceCollection instance from the IServiceCollection. public static IServiceCollection AddStore(this IServiceCollection collection, bool isScoped = true) - where TStore : class, IStore { + where TStore : class, IStore { if (isScoped) { collection.AddScoped() - .AddScoped< IStore>(p => p.GetRequiredService()); + .AddScoped>(p => p.GetRequiredService()); } else { collection.AddSingleton() - .AddSingleton< IStore>(p => p.GetRequiredService()); + .AddSingleton>(p => p.GetRequiredService()); } return collection; } @@ -47,14 +47,14 @@ public static IServiceCollection AddStore(this IServiceCollection collec /// If true, registers the stores with a scoped lifetime. Otherwise, registers with a singleton lifetime. /// >The registered IServiceCollection instance from the IServiceCollection. public static void ScanAssemblyAndAddStores(this IServiceCollection services, Assembly assembly, bool isScoped = true) { - foreach (var type in assembly.GetTypes().Where(t => t.IsAssignableTo(typeof( IStore)))) { + foreach (var type in assembly.GetTypes().Where(t => t.IsAssignableTo(typeof(IStore)))) { if (isScoped) { services.AddScoped(type) - .AddScoped(p => ( IStore)p.GetRequiredService(type)); + .AddScoped(p => (IStore)p.GetRequiredService(type)); } else { services.AddSingleton(type) - .AddSingleton(p => ( IStore)p.GetRequiredService(type)); + .AddSingleton(p => (IStore)p.GetRequiredService(type)); } } } diff --git a/src/Memento.Blazor/StoreObeserver.cs b/src/Memento.Blazor/StoreObeserver.cs index d6983da..4dc581f 100644 --- a/src/Memento.Blazor/StoreObeserver.cs +++ b/src/Memento.Blazor/StoreObeserver.cs @@ -1,5 +1,3 @@ -using System; - namespace Memento.Core; internal class StoreObserver diff --git a/src/Memento.Core/AbstractMementoStore.cs b/src/Memento.Core/AbstractMementoStore.cs index 4ce5402..0bcd27d 100644 --- a/src/Memento.Core/AbstractMementoStore.cs +++ b/src/Memento.Core/AbstractMementoStore.cs @@ -1,9 +1,4 @@ using Memento.Core.History; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Memento.Core; diff --git a/src/Memento.Core/AbstractStore.cs b/src/Memento.Core/AbstractStore.cs index adc4634..1ee537c 100644 --- a/src/Memento.Core/AbstractStore.cs +++ b/src/Memento.Core/AbstractStore.cs @@ -1,8 +1,6 @@ using Memento.Core.Internals; using System.Collections.Concurrent; using System.Collections.Immutable; -using System.ComponentModel; -using System.Data; namespace Memento.Core; diff --git a/src/Memento.Core/Executors/ThrottledExecutor.cs b/src/Memento.Core/Executors/ThrottledExecutor.cs index e660130..76f6f28 100644 --- a/src/Memento.Core/Executors/ThrottledExecutor.cs +++ b/src/Memento.Core/Executors/ThrottledExecutor.cs @@ -1,5 +1,4 @@ using Memento.Core.Internals; -using System; using System.Collections.Concurrent; namespace Memento.Core.Executors; diff --git a/src/Memento.Core/History/FutureHistoryStack.cs b/src/Memento.Core/History/FutureHistoryStack.cs index 5b8c36a..eff8121 100644 --- a/src/Memento.Core/History/FutureHistoryStack.cs +++ b/src/Memento.Core/History/FutureHistoryStack.cs @@ -17,7 +17,7 @@ public IReadOnlyCollection CloneAsReadOnly() { public void Push(T item) { lock (_values) { - _values.Insert(0, item); + _values.Insert(0, item); } } diff --git a/src/Memento.Core/History/IHistoryItem.cs b/src/Memento.Core/History/IHistoryItem.cs index 9a77b0e..415c9c8 100644 --- a/src/Memento.Core/History/IHistoryItem.cs +++ b/src/Memento.Core/History/IHistoryItem.cs @@ -1,6 +1,6 @@ namespace Memento.Core.History; -public interface IHistoryItem { +public interface IHistoryItem { string Name { get; } T HistoryState { get; } diff --git a/src/Memento.Core/Internals/StoreObserver.cs b/src/Memento.Core/Internals/StoreObserver.cs index 137087d..c444c71 100644 --- a/src/Memento.Core/Internals/StoreObserver.cs +++ b/src/Memento.Core/Internals/StoreObserver.cs @@ -21,9 +21,9 @@ public void OnNext(T value) { } internal class StoreObserver - : IObserver> - where TState:class - where TCommand :Command { + : IObserver> + where TState : class + where TCommand : Command { readonly Action> _action; public StoreObserver(Action> action) { diff --git a/src/Memento.Core/Middleware.cs b/src/Memento.Core/Middleware.cs index 8582668..0ab049e 100644 --- a/src/Memento.Core/Middleware.cs +++ b/src/Memento.Core/Middleware.cs @@ -6,10 +6,13 @@ public abstract class Middleware : IDisposable { public MiddlewareHandler Handler => _handler ?? throw new InvalidOperationException($"Middleware '{GetType().FullName}' has not initialized."); - internal async Task InitializeAsync(IServiceProvider provider) { + internal void Initalize(IServiceProvider provider) { var handler = Create(provider); _handler = handler; - await handler.InitializedAsync(); + } + + internal async Task InvokeInitializedAsync() { + await Handler.InitializedAsync(); } protected abstract MiddlewareHandler Create(IServiceProvider provider); diff --git a/src/Memento.Core/MiddlewareHandler.cs b/src/Memento.Core/MiddlewareHandler.cs index b63f549..210f15b 100644 --- a/src/Memento.Core/MiddlewareHandler.cs +++ b/src/Memento.Core/MiddlewareHandler.cs @@ -19,7 +19,7 @@ protected virtual Task OnInitializedAsync() { public virtual RootState? HandleProviderDispatch( RootState? state, - IStateChangedEventArgs e, + IStateChangedEventArgs e, NextProviderMiddlewareCallback next ) => next(state, e); diff --git a/src/Memento.Core/StateChangedEventArgs.cs b/src/Memento.Core/StateChangedEventArgs.cs index b4357db..320472e 100644 --- a/src/Memento.Core/StateChangedEventArgs.cs +++ b/src/Memento.Core/StateChangedEventArgs.cs @@ -1,5 +1,3 @@ -using System.Data; - namespace Memento.Core; public enum StateChangeType { diff --git a/src/Memento.Core/StoreProvider.cs b/src/Memento.Core/StoreProvider.cs index c0fbac9..959cccf 100644 --- a/src/Memento.Core/StoreProvider.cs +++ b/src/Memento.Core/StoreProvider.cs @@ -79,7 +79,7 @@ public RootState CaptureRootState() { /// Captures a dictionary containing all stores keyed by their type name. /// /// A dictionary containing all stores keyed by their type name. - public Dictionary> CaptureStoreBag() { + public Dictionary> CaptureStoreBag() { var map = new Dictionary>(); foreach (var item in ResolveAllStores()) { map.Add(item.GetType().Name, item); @@ -100,7 +100,7 @@ public async Task InitializeAsync() { throw new InvalidOperationException("Already initialized."); } - IsInitialized = true; + // observe all stores. foreach (var store in ResolveAllStores()) { var subscription = store.Subscribe(new StoreObserver(e => { @@ -122,13 +122,22 @@ public async Task InitializeAsync() { // Initialize all middleware. foreach (var middleware in GetAllMiddleware()) { try { - await middleware.InitializeAsync(_serviceContainer); + middleware.Initalize(_serviceContainer); } catch (Exception ex) { throw new InvalidDataException($@"Failed to initialize memento middleware ""{ex.Message}""", ex); } } + foreach (var middleware in GetAllMiddleware()) { + try { + await middleware.InvokeInitializedAsync(); + } + catch (Exception ex) { + throw new InvalidDataException($@"Failed to invoke OnInitialized memento middleware ""{ex.Message}""", ex); + } + } + // InitializeAsync all stores. foreach (var store in ResolveAllStores()) { try { @@ -138,6 +147,8 @@ public async Task InitializeAsync() { throw new InvalidDataException(@$"Failed to initialize memento provider ""{ex.Message}""", ex); } } + + IsInitialized = true; } /// diff --git a/src/Memento.ReduxDevTool.Browser/Memento.ReduxDevTool.Browser.csproj b/src/Memento.ReduxDevTool.Browser/Memento.ReduxDevTool.Browser.csproj index 7997603..9bba93d 100644 --- a/src/Memento.ReduxDevTool.Browser/Memento.ReduxDevTool.Browser.csproj +++ b/src/Memento.ReduxDevTool.Browser/Memento.ReduxDevTool.Browser.csproj @@ -6,7 +6,7 @@ - + @@ -15,6 +15,10 @@ + + + + diff --git a/src/Memento.ReduxDevTool.Remote/Memento.ReduxDevTool.Remote.csproj b/src/Memento.ReduxDevTool.Remote/Memento.ReduxDevTool.Remote.csproj index 2eb243f..8e33625 100644 --- a/src/Memento.ReduxDevTool.Remote/Memento.ReduxDevTool.Remote.csproj +++ b/src/Memento.ReduxDevTool.Remote/Memento.ReduxDevTool.Remote.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs b/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs index c60a0fc..d73ae29 100644 --- a/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs +++ b/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs @@ -4,7 +4,6 @@ using System.Diagnostics; using System.Text.Json; using System.Text.RegularExpressions; -using static Memento.Core.Command; namespace Memento.ReduxDevTool; diff --git a/test/Memento.Test/Core/FluxStoreTest.cs b/test/Memento.Test/Core/FluxStoreTest.cs index ebd5803..9849cdb 100644 --- a/test/Memento.Test/Core/FluxStoreTest.cs +++ b/test/Memento.Test/Core/FluxStoreTest.cs @@ -1,6 +1,5 @@ using Memento.Core; using Memento.Test.Core.Mock; -using System.Diagnostics; namespace Memento.Test.Core; @@ -86,7 +85,7 @@ public async Task Command_CouldBeSubscribeCorrectly() { public async Task Force_ReplaceState() { var store = new FluxAsyncCounterStore(); - var commands = new List>(); + var commands = new List>(); var lastState = store.State; using var subscription = store.Subscribe(e => { @@ -122,7 +121,7 @@ public async Task Force_ReplaceState() { [Fact] public void Ensure_StateHasChangedInvoked() { var store = new FluxAsyncCounterStore(); - var commands = new List>(); + var commands = new List>(); var lastState = store.State; using var subscription = store.Subscribe(e => { diff --git a/test/Memento.Test/Core/Mock/MockMiddleware.cs b/test/Memento.Test/Core/Mock/MockMiddleware.cs index 0691090..7338e23 100644 --- a/test/Memento.Test/Core/Mock/MockMiddleware.cs +++ b/test/Memento.Test/Core/Mock/MockMiddleware.cs @@ -1,9 +1,4 @@ using Memento.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Memento.Test.Core.Mock; diff --git a/test/Memento.Test/Core/Mock/MockTodoService.cs b/test/Memento.Test/Core/Mock/MockTodoService.cs index d46d9e4..09567bc 100644 --- a/test/Memento.Test/Core/Mock/MockTodoService.cs +++ b/test/Memento.Test/Core/Mock/MockTodoService.cs @@ -1,29 +1,28 @@ -using Memento.Test.Core.Mock; using System.Collections.Immutable; namespace Memento.Test.Core.Mock; public class MockTodoService : ITodoService { - readonly List _items = new() { - new () { + readonly List _items = [ + new() { TodoId = Guid.NewGuid(), CreatedAt = DateTime.Now, IsCompleted = false, Text = "Test Item 1", }, - new () { + new() { TodoId = Guid.NewGuid(), CreatedAt = DateTime.Now, IsCompleted = false, Text = "Test Item 2", }, - new () { + new() { TodoId = Guid.NewGuid(), CreatedAt = DateTime.Now, IsCompleted = false, Text = "Test Item 3", }, - }; + ]; public async Task CreateItemAsync(Guid id, string text) { await Task.Delay(600); @@ -39,7 +38,7 @@ public async Task CreateItemAsync(Guid id, string text) { public async Task> FetchItemsAsync() { await Task.Delay(600); - return _items.ToImmutableArray(); + return [.. _items]; } public async Task RemoveAsync(Guid id) { diff --git a/test/Memento.Test/Core/Mock/RedoUndoTodoStore.cs b/test/Memento.Test/Core/Mock/RedoUndoTodoStore.cs index a636fe2..30d9ca4 100644 --- a/test/Memento.Test/Core/Mock/RedoUndoTodoStore.cs +++ b/test/Memento.Test/Core/Mock/RedoUndoTodoStore.cs @@ -1,7 +1,6 @@ using Memento.Core; using Memento.Test.Core.Mock; using System.Collections.Immutable; -using System.Xml.Linq; namespace Memento.Sample.Blazor.Stores; diff --git a/test/Memento.Test/Core/ProviderTest.cs b/test/Memento.Test/Core/ProviderTest.cs index ac7d8b6..e795bdd 100644 --- a/test/Memento.Test/Core/ProviderTest.cs +++ b/test/Memento.Test/Core/ProviderTest.cs @@ -1,9 +1,9 @@ using Memento.Blazor; +using Memento.Core; using Memento.Test.Core.Mock; using Microsoft.Extensions.DependencyInjection; -using Memento.Core; -using System.Text.Json; using System.Collections.Immutable; +using System.Text.Json; namespace Memento.Test.Core; diff --git a/test/Memento.Test/Core/ReDoUnDoStoreTest.cs b/test/Memento.Test/Core/ReDoUnDoStoreTest.cs index 48ae2bd..6b93240 100644 --- a/test/Memento.Test/Core/ReDoUnDoStoreTest.cs +++ b/test/Memento.Test/Core/ReDoUnDoStoreTest.cs @@ -1,6 +1,5 @@ using FluentAssertions; using Memento.Core; -using Memento.Core.History; using Memento.Sample.Blazor.Stores; using Memento.Test.Core.Mock; using Microsoft.Extensions.DependencyInjection; diff --git a/test/Memento.Test/Core/StoreTest.cs b/test/Memento.Test/Core/StoreTest.cs index 92ec5d4..aeb763b 100644 --- a/test/Memento.Test/Core/StoreTest.cs +++ b/test/Memento.Test/Core/StoreTest.cs @@ -2,8 +2,6 @@ using Memento.Core; using Memento.Test.Core.Mock; using System.Collections.Concurrent; -using System.Data; -using System.Diagnostics; using System.Reflection; namespace Memento.Test.Core; diff --git a/test/Memento.Test/Memento.Test.csproj b/test/Memento.Test/Memento.Test.csproj index 5979f83..1e63e95 100644 --- a/test/Memento.Test/Memento.Test.csproj +++ b/test/Memento.Test/Memento.Test.csproj @@ -1,7 +1,7 @@ - + - net7.0 + net8.0 enable enable @@ -12,15 +12,15 @@ - - - - - + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all