Skip to content

Upgrade to .NET 10 (#958)#960

Merged
erikdarlingdata merged 1 commit into
devfrom
feature/958-net10-upgrade
May 18, 2026
Merged

Upgrade to .NET 10 (#958)#960
erikdarlingdata merged 1 commit into
devfrom
feature/958-net10-upgrade

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

Upgrades the entire solution from .NET 8 to .NET 10 (LTS, supported through November 2028), and refreshes minor package versions while we're touching every csproj. Closes #958.

Why now

  • .NET 8 LTS support ends 2026-11-10 (6 months out)
  • .NET 9 (STS) already ended 2026-05-12 — not a viable target
  • .NET 10 is LTS with support through November 2028
  • Most of our package tree was already on 10.0.x (Microsoft.Extensions.*, System.Text.Json); the rest (Microsoft.Data.SqlClient, DuckDB.NET, ScottPlot.WPF, Velopack, ModelContextProtocol, xunit.v3) all support .NET 10

Changes

TargetFramework bumps (7 projects):

  • Dashboard, Lite, Lite.Tests, Lite/Properties/PublishProfiles/FolderProfile.pubxmlnet10.0-windows
  • Installer, Installer.Core, Installer.Tests, tools/CompactionRepronet10.0

Package version bumps:

  • Microsoft.Extensions.Configuration / Configuration.Json / Hosting / Logging: 10.0.710.0.8
  • System.Text.Json: 10.0.710.0.8 (Dashboard only; removed from Lite — see below)
  • ModelContextProtocol / ModelContextProtocol.AspNetCore: 1.2.01.3.0
  • Microsoft.NET.Test.Sdk: 18.4.018.5.1

Other:

  • Dropped explicit System.Text.Json reference from Lite — .NET 10 ships it in-runtime (NU1510)
  • packages.lock.json files regenerated via --force-evaluate; transitive lists shrank ~30% thanks to .NET 10 package pruning
  • CI: actions/setup-dotnet version 8.0.x10.0.x in build.yml and nightly.yml
  • CI: hardcoded Installer/bin/Release/net8.0/... artifact paths updated to net10.0 in both workflows and build-dashboard.cmd
  • Docs: README.md, CONTRIBUTING.md, Dashboard/README.md, Installer/README.md

Audit results — no deprecated or vulnerable packages.

Test plan

  • dotnet build PerformanceMonitor.sln -c Release → 0 warnings, 0 errors
  • Lite.Tests → 260/260 passed
  • Installer.Tests (CI fast filter, skipping live-DB tests) → 27/27 passed
  • dotnet publish Installer → self-contained single-file .exe produced (40 MB), launches and shows --help
  • CI build will run on this PR
  • Velopack delta upgrade smoke test on a real machine (release-time concern — first 10.0 release will be a full download for existing 8.0-runtime users since Velopack can't delta across runtime majors)

🤖 Generated with Claude Code

Bump TargetFramework to net10.0 / net10.0-windows across all 7
projects, update CI workflows and build scripts, and refresh
Microsoft.Extensions.* / System.Text.Json / ModelContextProtocol /
Microsoft.NET.Test.Sdk to their current versions.

Removes the explicit System.Text.Json reference from Lite since
.NET 10 ships it in-runtime (NU1510). packages.lock.json files
regenerated via --force-evaluate; transitive dependency lists
shrank ~30% thanks to .NET 10 package pruning.

Build: 0 warnings, 0 errors. Lite.Tests: 260/260, Installer.Tests
fast filter: 27/27.

.NET 8 LTS support ends 2026-11-10; .NET 9 already ended 2026-05-12.
.NET 10 is LTS through 2028-11.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 3aa9f4c into dev May 18, 2026
@erikdarlingdata erikdarlingdata deleted the feature/958-net10-upgrade branch May 18, 2026 13:50
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.

1 participant