Skip to content

PR #3 - Refactor: .NET Standard 2 -> .NET 10 to prep for Newtonsoft rewrite#96

Open
AlexanderJohnston wants to merge 25 commits into
bwatts:devfrom
AlexanderJohnston:refactor/netStandard_net10
Open

PR #3 - Refactor: .NET Standard 2 -> .NET 10 to prep for Newtonsoft rewrite#96
AlexanderJohnston wants to merge 25 commits into
bwatts:devfrom
AlexanderJohnston:refactor/netStandard_net10

Conversation

@AlexanderJohnston

Copy link
Copy Markdown

Summary

Upgrades the four core library projects from netstandard2.0 to net10.0, completing the framework modernization started in the previous upgrade cycle. This resolves the split-TFM architecture and enables the use of modern .NET 10 features throughout the codebase.

Changes

Project Target Framework Upgrades

  • Totem (netstandard2.0net10.0)
  • Totem.Runtime (netstandard2.0net10.0)
  • Totem.Timeline (netstandard2.0net10.0)
  • Totem.App.Tests (netstandard2.0net10.0)

Package Reference Upgrades (Totem.Runtime & Totem.Timeline)

  • Microsoft.Extensions.Configuration.Binder: 2.2.0 → 10.0.0
  • Microsoft.Extensions.DependencyInjection.Abstractions: 2.2.0 → 10.0.0
  • Microsoft.Extensions.Hosting.Abstractions: 2.2.0 → 10.0.0
  • Microsoft.Extensions.Logging.Abstractions: 2.2.0 → 10.0.0
  • Microsoft.Extensions.Options: 2.2.0 → 10.0.0

Code Changes

  • Fields.cs: Renamed lambda parameter from field to f in the Names property to avoid C# 14 keyword conflict
    • In C# 14 (default for .NET 10), field is now a reserved keyword for synthesized backing fields

Configuration Changes

  • Removed explicit LangVersion 7.1 from all four projects (now uses C# 14 default)

Impact

Non-Breaking: All downstream projects (already on net10.0) continue to build successfully
NuGet Compatibility: Projects continue to build as NuGet packages
Clean Build: 0 errors, 1 pre-existing warning (SYSLIB0050 on FormatterServices - tracked separately)

Architecture Benefits

This upgrade:

  • ✅ Unifies the entire solution on a single target framework (net10.0)
  • ✅ Eliminates the Microsoft.Extensions.* version mismatch (was 2.2.0 in core, 10.0.0 in apps)
  • ✅ Unlocks modern C# language features (nullable reference types, pattern matching, etc.)
  • ✅ Enables future use of System.Text.Json features in the core serialization layer (JsonNode, contract customization, PopulateObject)

Testing

  • ✅ All src projects build successfully
  • ✅ Verified downstream projects (Totem.App.Web, Totem.Timeline.EventStore, etc.) build cleanly
  • ✅ NuGet package generation succeeds for all projects

bwatts and others added 25 commits February 6, 2026 09:46
- Write to the client stream whether or not the checkpoint write succeeds
- Do not ignore events routed to stopped flows
- Avoid a null reference when an existing flow fails to load
The SkipException handling that required await was removed in a prior commit.
Simplify back to returning the task directly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@AlexanderJohnston AlexanderJohnston changed the title Refactor/net standard net10 PR #3 - Refactor/net standard net10 Feb 17, 2026
@AlexanderJohnston AlexanderJohnston changed the title PR #3 - Refactor/net standard net10 PR #3 - Refactor from netstandard to net10 to prep for System.Text.JSON Feb 17, 2026
@AlexanderJohnston AlexanderJohnston changed the title PR #3 - Refactor from netstandard to net10 to prep for System.Text.JSON PR #3 - Refactor: netstandard -> net10 to prep for System.Text.JSON Feb 17, 2026
@AlexanderJohnston AlexanderJohnston changed the title PR #3 - Refactor: netstandard -> net10 to prep for System.Text.JSON PR #3 - Refactor: netstandard -> net10 to prep for Newtonsoft rewrite Feb 17, 2026
@AlexanderJohnston AlexanderJohnston changed the title PR #3 - Refactor: netstandard -> net10 to prep for Newtonsoft rewrite PR #3 - Refactor: .NET Standard 2 -> .NET 10 to prep for Newtonsoft rewrite Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants