Skip to content

feat!: migrate to .NET 9 + fix DI cross-talk + minor fixes#291

Merged
laurentiu021 merged 1 commit into
mainfrom
feat/dotnet9-migration
May 13, 2026
Merged

feat!: migrate to .NET 9 + fix DI cross-talk + minor fixes#291
laurentiu021 merged 1 commit into
mainfrom
feat/dotnet9-migration

Conversation

@laurentiu021

@laurentiu021 laurentiu021 commented May 13, 2026

Copy link
Copy Markdown
Owner

Summary

Migrates the entire solution from .NET 8 to .NET 9. Fixes DI regression and several minor UI issues found during testing.

Changes

  • All 4 projects: net8.0-windows -> net9.0-windows
  • CI workflows: .NET 9 SDK
  • DI: PowerShellRunner Singleton -> Transient (fixes output cross-talk)
  • Microsoft.Extensions.DependencyInjection 8.0.1 -> 9.0.4
  • Uninstaller: filter empty rows (name < 2 chars)
  • Process Manager: CanUserResizeColumns=True
  • Windows Features: not-elevated warning badge
  • SpeedTestService: SYSLIB0057 pragma suppress
  • README + ARCHITECTURE: .NET 9 references

BREAKING: requires .NET 9 runtime

Closes #257

Summary by CodeRabbit

  • Bug Fixes

    • Fixed uninstaller to properly filter out short app names.
    • Enabled column resizing in the process manager view.
    • Corrected admin-elevation warning badge visibility in Windows features.
  • Chores

    • Upgraded platform to .NET 9 and C# 13.
    • Updated CI/CD pipelines to .NET 9 SDK.
    • Updated dependency packages.

Review Change Stack

BREAKING CHANGE: requires .NET 9 runtime (net9.0-windows TFM).

- Migrate all 4 projects from net8.0-windows to net9.0-windows
- Update CI workflows (ci.yml, codeql.yml, release.yml) to .NET 9 SDK
- Bump Microsoft.Extensions.DependencyInjection 8.0.1 → 9.0.4
- Fix DI regression: PowerShellRunner changed from Singleton to Transient
  (prevents LineReceived event cross-talk between tabs)
- Fix Uninstaller empty row (filter names < 2 chars)
- Fix Process Manager column resize (explicit CanUserResizeColumns)
- Fix Windows Features admin badge (show warning when not elevated)
- Fix SYSLIB0057 warning (pragma suppress CreateFromSignedFile)
- Update README: .NET 9 in tech stack and build prerequisites
- Update ARCHITECTURE.md: .NET 9 reference
- Update CHANGELOG with v0.47.0 entry

Closes #257
@coderabbitai

coderabbitai Bot commented May 13, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b701591d-2c69-4348-9cef-623af6f23b37

📥 Commits

Reviewing files that changed from the base of the PR and between 47cd971 and 023a060.

📒 Files selected for processing (15)
  • .github/workflows/ci.yml
  • .github/workflows/codeql.yml
  • .github/workflows/release.yml
  • ARCHITECTURE.md
  • CHANGELOG.md
  • README.md
  • SysManager/SysManager.IntegrationTests/SysManager.IntegrationTests.csproj
  • SysManager/SysManager.Tests/SysManager.Tests.csproj
  • SysManager/SysManager.UITests/SysManager.UITests.csproj
  • SysManager/SysManager/ServiceRegistration.cs
  • SysManager/SysManager/Services/SpeedTestService.cs
  • SysManager/SysManager/Services/UninstallerService.cs
  • SysManager/SysManager/SysManager.csproj
  • SysManager/SysManager/Views/ProcessManagerView.xaml
  • SysManager/SysManager/Views/WindowsFeaturesView.xaml
📜 Recent review details
🔇 Additional comments (15)
SysManager/SysManager/Views/ProcessManagerView.xaml (1)

61-61: LGTM!

SysManager/SysManager.UITests/SysManager.UITests.csproj (1)

4-4: LGTM!

.github/workflows/release.yml (1)

29-32: LGTM!

README.md (1)

383-383: LGTM!

Also applies to: 450-450

.github/workflows/codeql.yml (1)

25-28: LGTM!

ARCHITECTURE.md (1)

3-3: LGTM!

SysManager/SysManager.Tests/SysManager.Tests.csproj (1)

4-4: LGTM!

SysManager/SysManager/Services/SpeedTestService.cs (1)

332-334: ⚡ Quick win

The pragma suppression for SYSLIB0057 is justified.

CreateFromSignedFile is indeed obsolete in .NET 9 and produces warning SYSLIB0057. Your pragma comment is accurate—there is no direct replacement. While alternatives for Authenticode verification exist (such as SignedCode.Verify or FileSignatureInfo), they are specialized APIs requiring different approaches rather than direct API swaps. The suppression with the explanatory comment appropriately documents this limitation.

SysManager/SysManager/Services/UninstallerService.cs (1)

112-112: LGTM!

.github/workflows/ci.yml (1)

26-29: LGTM!

Also applies to: 95-98

SysManager/SysManager.IntegrationTests/SysManager.IntegrationTests.csproj (1)

4-4: LGTM!

SysManager/SysManager/SysManager.csproj (1)

5-5: LGTM!

Also applies to: 39-39

SysManager/SysManager/ServiceRegistration.cs (1)

19-23: LGTM!

SysManager/SysManager/Views/WindowsFeaturesView.xaml (1)

53-56: LGTM!

CHANGELOG.md (1)

9-25: LGTM!


📝 Walkthrough

Walkthrough

This PR completes the migration from .NET 8 to .NET 9 across all SysManager projects and CI/CD workflows, upgrades the DependencyInjection NuGet package, corrects the PowerShellRunner service lifetime to transient, and includes four targeted bug fixes for the uninstaller, process manager, Windows features UI, and Authenticode verification.

Changes

.NET 9 Migration and Bug Fixes

Layer / File(s) Summary
CI/CD and Project Target Framework Migration
.github/workflows/ci.yml, .github/workflows/codeql.yml, .github/workflows/release.yml, SysManager/SysManager.csproj, SysManager/SysManager.IntegrationTests/SysManager.IntegrationTests.csproj, SysManager/SysManager.Tests/SysManager.Tests.csproj, SysManager/SysManager.UITests/SysManager.UITests.csproj
All GitHub Actions workflows (build-and-test, CodeQL, release) and all project files updated from .NET 8 SDK and net8.0-windows target framework to .NET 9 SDK and net9.0-windows.
Dependency Injection Package and Service Lifetime Updates
SysManager/SysManager/SysManager.csproj, SysManager/SysManager/ServiceRegistration.cs
Microsoft.Extensions.DependencyInjection upgraded from 8.0.1 to 9.0.4; PowerShellRunner service registration changed from singleton to transient so each ViewModel receives its own instance, preventing LineReceived event cross-talk.
Code and UI Bug Fixes
SysManager/SysManager/Services/UninstallerService.cs, SysManager/SysManager/Services/SpeedTestService.cs, SysManager/SysManager/Views/ProcessManagerView.xaml, SysManager/SysManager/Views/WindowsFeaturesView.xaml
UninstallerService now filters winget entries with names shorter than 2 characters; SpeedTestService suppresses SYSLIB0057 warning for CreateFromSignedFile; ProcessManagerView allows user column resizing; WindowsFeaturesView corrects visibility binding so "not elevated" warning badge displays only when app lacks administrator privileges.
Release Notes and Platform Documentation
README.md, ARCHITECTURE.md, CHANGELOG.md
README and ARCHITECTURE.md updated to document .NET 9 and C# 13 as the platform baseline; CHANGELOG records version 0.47.0 with all migration changes, bug fixes, and dependency updates.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • laurentiu021/SystemManager#288: Both PRs modify SysManager/SysManager/ServiceRegistration.cs in code-relevant ways; the main PR switches PowerShellRunner to transient registration, which is essential for the new WindowsFeaturesService and WindowsFeaturesViewModel introduced in the related PR to properly isolate PowerShell operations.

Poem

🐰 Nine dots on the screen, a leap through the air,
Framework's refreshed, dependencies fair,
Uninstaller filters, warnings suppressed with care,
Column resize and badges—fixes everywhere!
To .NET Nine, we've climbed the stair! 🚀

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main objectives: .NET 9 migration, DI cross-talk fix, and minor fixes, matching the changeset content.
Linked Issues check ✅ Passed All coding requirements from issue #257 are met: TargetFramework updated to net9.0-windows, NuGet packages bumped, and CI workflows updated to .NET 9.
Out of Scope Changes check ✅ Passed All changes are in scope: infrastructure updates (workflows, TFM, NuGet), the DI fix for cross-talk (core objective), and documented minor fixes align with the migration PR.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/dotnet9-migration

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 25.00000% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
SysManager/SysManager/Services/SpeedTestService.cs 0.00% 2 Missing ⚠️
SysManager/SysManager/ServiceRegistration.cs 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@laurentiu021
laurentiu021 merged commit b8c1f63 into main May 13, 2026
5 checks passed
@laurentiu021
laurentiu021 deleted the feat/dotnet9-migration branch May 13, 2026 10:15
laurentiu021 added a commit that referenced this pull request May 22, 2026
Adds CHANGELOG.md entries for the three releases from this session:

- **v0.21.7** — UI freeze fixes (async offloading for Cleanup, Speed
Test, Drivers)
- **v0.21.8** — chkdsk admin privilege check
- **v0.21.9** — SFC/DISM elevation consent dialog

Co-authored-by: laurentiu021 <laurentiu021@users.noreply.github.com>
laurentiu021 added a commit that referenced this pull request May 22, 2026
BREAKING CHANGE: requires .NET 9 runtime (net9.0-windows TFM).

- Migrate all 4 projects from net8.0-windows to net9.0-windows
- Update CI workflows (ci.yml, codeql.yml, release.yml) to .NET 9 SDK
- Bump Microsoft.Extensions.DependencyInjection 8.0.1 → 9.0.4
- Fix DI regression: PowerShellRunner changed from Singleton to Transient
  (prevents LineReceived event cross-talk between tabs)
- Fix Uninstaller empty row (filter names < 2 chars)
- Fix Process Manager column resize (explicit CanUserResizeColumns)
- Fix Windows Features admin badge (show warning when not elevated)
- Fix SYSLIB0057 warning (pragma suppress CreateFromSignedFile)
- Update README: .NET 9 in tech stack and build prerequisites
- Update ARCHITECTURE.md: .NET 9 reference
- Update CHANGELOG with v0.47.0 entry

Closes #257

Co-authored-by: laurentiu021 <laurentiu021@users.noreply.github.com>
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.

[Enhancement]: Architecture — Migrate to .NET 9 or .NET 10 LTS

2 participants