From 8c955ee4749280f5fe3d58e16719c5cb3c4f9e0a Mon Sep 17 00:00:00 2001 From: "engine-labs-app[bot]" <140088366+engine-labs-app[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:24:30 +0000 Subject: [PATCH] build(upgrade): migrate project to .NET 9, update dependencies Upgrade project from .NET Core 3.1 to .NET 9 to keep the codebase up to date, benefit from new language/runtime features, and maintain supportability. - Changed target framework to net9.0-windows and SDK to Microsoft.NET.Sdk - Updated NuGet dependencies to latest versions compatible with .NET 9 - Replaced obsolete ReactiveValidationObject usages per latest API - Replaced deprecated ObserveOnDispatcher (RxUI) with ObserveOn(RxApp.MainThreadScheduler) - Set EnableWindowsTargeting for Linux-based build agents Minor warnings remain for ReactiveUI.WPF packaging; builds succeed. BREAKING CHANGE: Project now requires .NET 9 SDK and updated packages --- .../SimpleStateMachineNodeEditor.csproj | 33 ++++++++++--------- .../ViewModel/Dialog/DialogViewModel.cs | 4 +-- .../MainWindow/MainWindowViewModel.cs | 4 +-- .../ViewModel/Node/NodeViewModel.cs | 6 ++-- .../NodesCanvas/NodesCanvasViewModel.cs | 4 +-- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/SimpleStateMachineNodeEditor/SimpleStateMachineNodeEditor.csproj b/SimpleStateMachineNodeEditor/SimpleStateMachineNodeEditor.csproj index 11538cd..6a24f32 100644 --- a/SimpleStateMachineNodeEditor/SimpleStateMachineNodeEditor.csproj +++ b/SimpleStateMachineNodeEditor/SimpleStateMachineNodeEditor.csproj @@ -1,9 +1,10 @@ - + - - WinExe - netcoreapp3.1 - true + + WinExe + net9.0-windows + true + true SimpleStateMachineNodeEditor.App StateMachine.ico false @@ -62,17 +63,17 @@ New format for xml file with schemes - - - - - - - - - - - + + + + + + + + + + + diff --git a/SimpleStateMachineNodeEditor/ViewModel/Dialog/DialogViewModel.cs b/SimpleStateMachineNodeEditor/ViewModel/Dialog/DialogViewModel.cs index e854d6b..a95bbdd 100644 --- a/SimpleStateMachineNodeEditor/ViewModel/Dialog/DialogViewModel.cs +++ b/SimpleStateMachineNodeEditor/ViewModel/Dialog/DialogViewModel.cs @@ -1,11 +1,11 @@ -using ReactiveUI.Fody.Helpers; +using ReactiveUI.Fody.Helpers; using ReactiveUI.Validation.Helpers; using SimpleStateMachineNodeEditor.Helpers.Enums; using System.Windows; namespace SimpleStateMachineNodeEditor.ViewModel { - public class DialogViewModel : ReactiveValidationObject + public class DialogViewModel : ReactiveValidationObject { [Reactive] public bool? Visibility { get; set; } [Reactive] public DialogType Type { get; set; } diff --git a/SimpleStateMachineNodeEditor/ViewModel/MainWindow/MainWindowViewModel.cs b/SimpleStateMachineNodeEditor/ViewModel/MainWindow/MainWindowViewModel.cs index c6c00f7..5206c03 100644 --- a/SimpleStateMachineNodeEditor/ViewModel/MainWindow/MainWindowViewModel.cs +++ b/SimpleStateMachineNodeEditor/ViewModel/MainWindow/MainWindowViewModel.cs @@ -1,4 +1,4 @@ -using DynamicData; +using DynamicData; using DynamicData.Binding; using ReactiveUI; using ReactiveUI.Fody.Helpers; @@ -57,7 +57,7 @@ private void UpdateMessages() bool debugEnable = DebugEnable.HasValue && DebugEnable.Value; bool displayAll = this.NodesCanvas.DisplayMessageType == TypeMessage.All; - ConnectToMessages = this.NodesCanvas.Messages.ToObservableChangeSet().Filter(x => CheckForDisplay(x.TypeMessage)).ObserveOnDispatcher().Bind(Messages).DisposeMany().Subscribe(); + ConnectToMessages = this.NodesCanvas.Messages.ToObservableChangeSet().Filter(x => CheckForDisplay(x.TypeMessage)).ObserveOn(RxApp.MainThreadScheduler).Bind(Messages).DisposeMany().Subscribe(); bool CheckForDisplay(TypeMessage typeMessage) { diff --git a/SimpleStateMachineNodeEditor/ViewModel/Node/NodeViewModel.cs b/SimpleStateMachineNodeEditor/ViewModel/Node/NodeViewModel.cs index 0806a56..7f32141 100644 --- a/SimpleStateMachineNodeEditor/ViewModel/Node/NodeViewModel.cs +++ b/SimpleStateMachineNodeEditor/ViewModel/Node/NodeViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Windows; using System.Windows.Media; using System.Reactive.Linq; @@ -16,7 +16,7 @@ namespace SimpleStateMachineNodeEditor.ViewModel { - public partial class NodeViewModel : ReactiveValidationObject + public partial class NodeViewModel : ReactiveValidationObject { [Reactive] public Point Point1 { get; set; } [Reactive] public Point Point2 { get; set; } @@ -54,7 +54,7 @@ private NodeViewModel() Name = name; Zindex = nodesCanvas.Nodes.Count; Point1 = point; - Transitions.Connect().ObserveOnDispatcher().Bind(TransitionsForView).Subscribe(); + Transitions.Connect().ObserveOn(RxApp.MainThreadScheduler).Bind(TransitionsForView).Subscribe(); SetupConnectors(); SetupCommands(); diff --git a/SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/NodesCanvasViewModel.cs b/SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/NodesCanvasViewModel.cs index 48f4bd4..1e1ef4e 100644 --- a/SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/NodesCanvasViewModel.cs +++ b/SimpleStateMachineNodeEditor/ViewModel/NodesCanvas/NodesCanvasViewModel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Reactive.Linq; using ReactiveUI; @@ -71,7 +71,7 @@ public NodesCanvasViewModel() if (Theme == Themes.noCorrect) Theme = Themes.Dark; SetTheme(Theme); Cutter = new CutterViewModel(this); - Nodes.Connect().ObserveOnDispatcher().Bind(NodesForView).Subscribe(); + Nodes.Connect().ObserveOn(RxApp.MainThreadScheduler).Bind(NodesForView).Subscribe(); SetupCommands(); SetupSubscriptions(); SetupStartState();