Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 22 additions & 3 deletions .github/upgrades/scenarios/dotnet-version-upgrade/assessment.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This document provides a comprehensive overview of the projects and their depend

## Table of Contents

- [Executive Summary](#executive-Summary)
- [Executive Summary](#executive-summary)
- [Highlevel Metrics](#highlevel-metrics)
- [Projects Compatibility](#projects-compatibility)
- [Package Compatibility](#package-compatibility)
Expand All @@ -27,7 +27,6 @@ This document provides a comprehensive overview of the projects and their depend
- [MyBlog\tests\Web.Tests.Integration\Web.Tests.Integration.csproj](#myblogtestswebtestsintegrationwebtestsintegrationcsproj)
- [MyBlog\tests\Web.Tests\Web.Tests.csproj](#myblogtestswebtestswebtestscsproj)


## Executive Summary

### Highlevel Metrics
Expand Down Expand Up @@ -153,6 +152,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart LR
P1["<b>📦&nbsp;AppHost.csproj</b><br/><small>net10.0</small>"]
P2["<b>📦&nbsp;Domain.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -195,6 +195,7 @@ flowchart LR
## Project Details

<a id="myblogsrcapphostapphostcsproj"></a>

### MyBlog\src\AppHost\AppHost.csproj

#### Project Info
Expand All @@ -217,6 +218,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph upstream["Dependants (2)"]
P5["<b>📦&nbsp;AppHost.Tests.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -252,6 +254,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***596*** | |

<a id="myblogsrcdomaindomaincsproj"></a>

### MyBlog\src\Domain\Domain.csproj

#### Project Info
Expand All @@ -274,6 +277,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph upstream["Dependants (6)"]
P4["<b>📦&nbsp;Web.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -313,6 +317,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***254*** | |

<a id="myblogsrcservicedefaultsservicedefaultscsproj"></a>

### MyBlog\src\ServiceDefaults\ServiceDefaults.csproj

#### Project Info
Expand All @@ -335,6 +340,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph upstream["Dependants (2)"]
P1["<b>📦&nbsp;AppHost.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -362,6 +368,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***138*** | |

<a id="myblogsrcwebwebcsproj"></a>

### MyBlog\src\Web\Web.csproj

#### Project Info
Expand All @@ -384,6 +391,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph upstream["Dependants (5)"]
P1["<b>📦&nbsp;AppHost.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -428,6 +436,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***5012*** | |

<a id="myblogtestsapphosttestsapphosttestscsproj"></a>

### MyBlog\tests\AppHost.Tests\AppHost.Tests.csproj

#### Project Info
Expand All @@ -450,6 +459,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph current["AppHost.Tests.csproj"]
MAIN["<b>📦&nbsp;AppHost.Tests.csproj</b><br/><small>net10.0</small>"]
Expand All @@ -474,6 +484,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***2830*** | |

<a id="myblogtestsarchitecturetestsarchitecturetestscsproj"></a>

### MyBlog\tests\Architecture.Tests\Architecture.Tests.csproj

#### Project Info
Expand All @@ -496,6 +507,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph current["Architecture.Tests.csproj"]
MAIN["<b>📦&nbsp;Architecture.Tests.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -523,6 +535,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***405*** | |

<a id="myblogtestsdomaintestsdomaintestscsproj"></a>

### MyBlog\tests\Domain.Tests\Domain.Tests.csproj

#### Project Info
Expand All @@ -545,6 +558,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph current["Domain.Tests.csproj"]
MAIN["<b>📦&nbsp;Domain.Tests.csproj</b><br/><small>net10.0</small>"]
Expand All @@ -569,6 +583,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***724*** | |

<a id="myblogtestswebtestsbunitwebtestsbunitcsproj"></a>

### MyBlog\tests\Web.Tests.Bunit\Web.Tests.Bunit.csproj

#### Project Info
Expand All @@ -591,6 +606,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph current["Web.Tests.Bunit.csproj"]
MAIN["<b>📦&nbsp;Web.Tests.Bunit.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -618,6 +634,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***4629*** | |

<a id="myblogtestswebtestsintegrationwebtestsintegrationcsproj"></a>

### MyBlog\tests\Web.Tests.Integration\Web.Tests.Integration.csproj

#### Project Info
Expand All @@ -640,6 +657,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph current["Web.Tests.Integration.csproj"]
MAIN["<b>📦&nbsp;Web.Tests.Integration.csproj</b><br/><small>net10.0</small>"]
Expand Down Expand Up @@ -670,6 +688,7 @@ flowchart TB
| ***Total APIs Analyzed*** | ***573*** | |

<a id="myblogtestswebtestswebtestscsproj"></a>

### MyBlog\tests\Web.Tests\Web.Tests.csproj

#### Project Info
Expand All @@ -692,6 +711,7 @@ Legend:
⚙️ Classic project

```mermaid

flowchart TB
subgraph current["Web.Tests.csproj"]
MAIN["<b>📦&nbsp;Web.Tests.csproj</b><br/><small>net10.0</small>"]
Expand All @@ -717,4 +737,3 @@ flowchart TB
| 🔵 Behavioral change | 10 | Low - Behavioral changes that may require testing at runtime |
| ✅ Compatible | 4649 | |
| ***Total APIs Analyzed*** | ***4660*** | |

Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@

## [2026-05-12 14:20] 01-prerequisites

✅ **Prerequisites completed**. .NET 11 SDK (11.0.100-preview) installed and configured. Updated `global.json` to enable preview SDK with `allowPrerelease: true` and `rollForward: latestMajor`. Baseline build on net10.0 succeeded (89 pre-existing warnings). Playwright test infrastructure installed and ready. Solution is now prepared for framework upgrade."


## [2026-05-12 15:06] 02.01-retarget-projects

✅ **Task 02.01-retarget-projects completed** — All 10 projects retargeted from net10.0 to net11.0. Updated global.json for preview SDK. Build and restore validated successfully. Temporary style/analyzer suppressions applied to unblock framework migration. Ready for next task.


## [2026-05-12 15:09] 02.02-remove-deprecated-package

✅ **Task 02.02 completed** — Removed deprecated FluentValidation.AspNetCore 11.3.1 from Web.csproj and Directory.Packages.props (CPM). FluentValidation.DependencyInjectionExtensions 12.1.1 remains. Restore and build both succeed with 0 errors.


## [2026-05-12 15:14] 02.03-build-and-validate

✅ **Task 02.03 completed** — Performed full validation on net11.0: restore succeeded, release build succeeded with 0 errors, and test suite passed (377 passed, 1 skipped, 0 failed). Upgrade is functionally validated on .NET 11.


## [2026-05-12 15:15] 03-final-validation

✅ **Final validation completed** — Release restore/build succeeded on .NET 11, and the full test suite passed (378 total, 377 passed, 1 skipped, 0 failed). AppHost-related validation also passed. The upgrade is complete, with temporary style diagnostic suppression left in place per user-approved fast-path execution.

Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
# .NET Version Upgrade

## Preferences

- **Flow Mode**: Automatic
- **Target Framework**: net11.0 (.NET 11.0 PREVIEW)

## Source Control

- **Source Branch**: dev
- **Working Branch**: dotnet-version-upgrade
- **Commit Strategy**: After Each Task

## Upgrade Options

**Source**: .github/upgrades/dotnet-version-upgrade/upgrade-options.md

### Strategy

- Upgrade Strategy: All-at-Once

## User Preferences

### Execution Style

- Temporarily suppress style diagnostics to complete the .NET 11 upgrade quickly (user-selected option 3).
6 changes: 3 additions & 3 deletions .github/upgrades/scenarios/dotnet-version-upgrade/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

- ✅ 01-prerequisites: Prepare toolchain and environment ([Content](tasks/01-prerequisites/task.md), [Progress](tasks/01-prerequisites/progress-details.md))
- ✅ 02-upgrade-all-projects: Update all projects to net11.0 ([Content](tasks/02-upgrade-all-projects/task.md), [Progress](tasks/02-upgrade-all-projects/progress-details.md))
- ✅ 02.01-retarget-projects: Retarget all 10 projects from net10.0 to net11.0 ([Content](tasks/02.01-retarget-projects/task.md), [Progress](tasks/02.01-retarget-projects/progress-details.md))
- ✅ 02.02-remove-deprecated-package: Remove deprecated FluentValidation.AspNetCore and update FluentValidation references ([Content](tasks/02.02-remove-deprecated-package/task.md), [Progress](tasks/02.02-remove-deprecated-package/progress-details.md))
- ✅ 02.03-build-and-validate: Build solution, fix all warnings, run full test suite ([Content](tasks/02.03-build-and-validate/task.md), [Progress](tasks/02.03-build-and-validate/progress-details.md))
- ✅ 02.01-retarget-projects: Retarget all 10 projects from net10.0 to net11.0 ([Content](tasks/02.01-retarget-projects/task.md), [Progress](tasks/02.01-retarget-projects/progress-details.md))
- ✅ 02.02-remove-deprecated-package: Remove deprecated FluentValidation.AspNetCore and update FluentValidation references ([Content](tasks/02.02-remove-deprecated-package/task.md), [Progress](tasks/02.02-remove-deprecated-package/progress-details.md))
- ✅ 02.03-build-and-validate: Build solution, fix all warnings, run full test suite ([Content](tasks/02.03-build-and-validate/task.md), [Progress](tasks/02.03-build-and-validate/progress-details.md))
- ✅ 03-final-validation: Comprehensive solution verification ([Content](tasks/03-final-validation/task.md), [Progress](tasks/03-final-validation/progress-details.md))

**Legend**: ✅ Complete | 🔄 In Progress | 🔲 Pending | ⚠️ Blocked | ❌ Failed
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,39 @@
## Changes Made

### 1. .NET SDK Installation

- Downloaded and installed .NET 11.0 preview SDK (11.0.100-preview.3.26207.106)
- Installation location: `C:\Users\teqsl\.dotnet`
- Verified: `dotnet --version` returns 11.0.100-preview.3.26207.106

### 2. global.json Update

Updated to allow preview SDK and adjust rollForward settings:

```json

{
"sdk": {
"version": "11.0.100-preview",
"rollForward": "latestMajor",
"allowPrerelease": true
}
}

```

- Changed from `10.0.200` to `11.0.100-preview`
- Changed `rollForward` from `latestMinor` to `latestMajor`
- Changed `allowPrerelease` from `false` to `true`

### 3. Validation

- .NET 11 SDK installation validated and confirmed
- `validate_dotnet_sdk_installation` confirmed compatibility
- `validate_dotnet_sdk_in_globaljson` confirmed proper settings

### 4. Playwright Installation

Installed Playwright browser binaries (Chromium, Firefox, WebKit) needed for integration tests

## Build Status
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,20 @@ Verify .NET SDK compatibility with the target framework. Check that the developm
**Projects affected**: All 10 projects depend on the toolchain configuration

**Distinct concerns**:

1. .NET SDK verification (.NET 11 availability)
2. `global.json` update (SDK version pinning)
3. Baseline validation (tests pass on current framework before any upgrade)

**Change signals**:

- Current SDK: 10.0.200 (latest for .NET 10)
- Available SDKs: 8.0, 9.0 (x3), 10.0 (x3), 10.0.300-preview
- Target: .NET 11.0 (Preview) — no preview SDK found yet
- Current `global.json`: pinned to 10.0.200 with rollForward: latestMinor, allowPrerelease: false

**Research findings**:

- .NET 11 SDK is not currently installed. Check `dotnet --list-sdks` — only 10.0 (and preview) available
- `global.json` prevents prerelease SDKs with `allowPrerelease: false`
- Need to update `global.json` to allow prerelease and possibly adjust rollForward
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Update all NuGet package references across the solution. Address the one depreca
## Scope Inventory

**Projects affected**:

- src/AppHost/AppHost.csproj
- src/Domain/Domain.csproj
- src/ServiceDefaults/ServiceDefaults.csproj
Expand All @@ -21,13 +22,15 @@ Update all NuGet package references across the solution. Address the one depreca
- tests/Web.Tests.Integration/Web.Tests.Integration.csproj

**Distinct concerns**:

1. Retarget all projects from net10.0 to net11.0
2. Resolve deprecated package usage (FluentValidation.AspNetCore)
3. Address assessment API compatibility findings in Web and test projects
4. Restore/build and fix all warnings in touched projects
5. Run full test suite on net11.0

**Dependency/context signals**:

- Project graph depth: 4 levels (Domain/ServiceDefaults foundational, Web mid-tier, AppHost upper-tier, tests at top)
- Package management: CPM enabled via Directory.Packages.props
- Known package issue: FluentValidation.AspNetCore deprecated
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Task 02.01-retarget-projects: Progress Details

## Summary

Retargeted all solution projects from `net10.0` to `net11.0` and validated restore/build with .NET 11 preview SDK.

## Changes Applied

- Updated `TargetFramework` from `net10.0` to `net11.0` in all 10 project files:
- `src/AppHost/AppHost.csproj`
- `src/Domain/Domain.csproj`
Expand All @@ -21,14 +23,17 @@ Retargeted all solution projects from `net10.0` to `net11.0` and validated resto
- `allowPrerelease`: `true`

## Build/Restore Validation

- `dotnet restore MyBlog.slnx` succeeded.
- `dotnet build MyBlog.slnx --no-restore -c Release` succeeded with 0 errors.

## Notes

- Per user-approved fast-path execution, temporary style diagnostic suppression was applied in `Directory.Build.props` to avoid blocking framework retargeting on non-functional analyzer/style debt.
- Functional code files were restored after exploratory formatting attempts; final retained changes are upgrade-scope project/config updates.

## Done-When Check

- ✅ All projects target `net11.0`
- ✅ Solution restores successfully
- ✅ Solution builds without compilation errors
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
# 02.01-retarget-projects: Retarget all projects to net11.0

## Objective

Update the TargetFramework property in all 10 project files from net10.0 to net11.0 and build the solution to validate the retargeting.

## Scope

Affects all 10 projects:

- src/AppHost/AppHost.csproj
- src/Domain/Domain.csproj
- src/ServiceDefaults/ServiceDefaults.csproj
Expand All @@ -19,9 +22,11 @@ Affects all 10 projects:
- tests/Web.Tests.Integration/Web.Tests.Integration.csproj

## Done when

All projects have `<TargetFramework>net11.0</TargetFramework>`, solution builds without compilation errors, restore succeeds.

## Research Notes

- All 10 projects are SDK-style and currently target `net10.0` with singular `TargetFramework` entries.
- No `Directory.Build.props` override for TargetFramework was detected; each project file can be updated directly.
- This subtask scope is only TFM retargeting; package deprecation and warning cleanup are handled in later subtasks.
Loading
Loading