diff --git a/.github/upgrades/assessment.csv b/.github/upgrades/assessment.csv new file mode 100644 index 0000000..bf8ec9b --- /dev/null +++ b/.github/upgrades/assessment.csv @@ -0,0 +1,4 @@ +ID problema,Descrizione,Stato,GravitΓ ,Punti della storia,Percorso progetto,Tipologia di posizione,PERCORSO,Riga,Colonna,ID evento imprevisto,Collegamento alla Guida,Nome dell'assembly,Versione assembly,Chiave pubblica dell'assembly,Frammento +NuGet.0002,È consigliabile eseguire l'aggiornamento del pacchetto NuGet,Active,Potential,1,AutoBidder.csproj,File,AutoBidder.csproj,,,Microsoft.EntityFrameworkCore.Sqlite 8.0.0,,,,,"Microsoft.EntityFrameworkCore.Sqlite, 8.0.0 Raccomandazione: Remove Microsoft.EntityFrameworkCore.Sqlite, and replace with new package Microsoft.EntityFrameworkCore.Sqlite 10.0.5" +NuGet.0002,È consigliabile eseguire l'aggiornamento del pacchetto NuGet,Active,Potential,1,AutoBidder.csproj,File,AutoBidder.csproj,,,Microsoft.AspNetCore.Identity.EntityFrameworkCore 8.0.0,,,,,"Microsoft.AspNetCore.Identity.EntityFrameworkCore, 8.0.0 Raccomandazione: Remove Microsoft.AspNetCore.Identity.EntityFrameworkCore, and replace with new package Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.5" +Project.0002,È necessario modificare i framework di destinazione del progetto,Active,Mandatory,1,AutoBidder.csproj,File,AutoBidder.csproj,,,,,,,,Framework di destinazione corrente: net8.0 Framework di destinazione consigliato: net10.0 diff --git a/.github/upgrades/assessment.json b/.github/upgrades/assessment.json new file mode 100644 index 0000000..452545a --- /dev/null +++ b/.github/upgrades/assessment.json @@ -0,0 +1,167 @@ +{ + "settings": { + "components": { + "code": false, + "binaries": false + }, + "targetId": "net10.0", + "targetDisplayName": ".NETCoreApp,Version=v10.0" + }, + "analysisStartTime": "2026-03-31T16:24:00.9934354Z", + "analysisEndTime": "2026-03-31T16:24:01.3926356Z", + "privacyModeHelpUrl": "https://go.microsoft.com/fwlink/?linkid=2270980", + "stats": { + "summary": { + "projects": 1, + "issues": 2, + "incidents": 3, + "effort": 3 + }, + "charts": { + "severity": { + "Mandatory": 1, + "Optional": 0, + "Potential": 2, + "Information": 0 + }, + "category": { + "NuGet": 2, + "Project": 1 + } + } + }, + "projects": [ + { + "path": "AutoBidder.csproj", + "startingProject": true, + "issues": 2, + "storyPoints": 3, + "properties": { + "appName": "AutoBidder", + "projectKind": "AspNetCore", + "frameworks": [ + "net8.0" + ], + "languages": [ + "C#" + ], + "tools": [ + "MSBuild" + ], + "isSdkStyle": true, + "numberOfFiles": 76, + "numberOfCodeFiles": 50, + "linesTotal": 24601, + "linesOfCode": 14361, + "totalApiScanned": 0, + "minLinesOfCodeToChange": 0, + "maxLinesOfCodeToChange": 0 + }, + "ruleInstances": [ + { + "incidentId": "3d50aa32-1a3a-4f89-8e30-cc70a68af57e", + "ruleId": "NuGet.0002", + "projectPath": "AutoBidder.csproj", + "state": "Active", + "location": { + "snippetModel": { + "unrestricted": "Microsoft.EntityFrameworkCore.Sqlite, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.EntityFrameworkCore.Sqlite, and replace with new package Microsoft.EntityFrameworkCore.Sqlite 10.0.5", + "protected": "Microsoft.EntityFrameworkCore.Sqlite, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.EntityFrameworkCore.Sqlite, and replace with new package Microsoft.EntityFrameworkCore.Sqlite 10.0.5" + }, + "kind": "File", + "path": "AutoBidder.csproj", + "snippet": "Microsoft.EntityFrameworkCore.Sqlite, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.EntityFrameworkCore.Sqlite, and replace with new package Microsoft.EntityFrameworkCore.Sqlite 10.0.5", + "protectedSnippet": "Microsoft.EntityFrameworkCore.Sqlite, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.EntityFrameworkCore.Sqlite, and replace with new package Microsoft.EntityFrameworkCore.Sqlite 10.0.5", + "label": "Microsoft.EntityFrameworkCore.Sqlite 8.0.0", + "properties": { + "PackageId": "Microsoft.EntityFrameworkCore.Sqlite", + "PackageVersion": "8.0.0", + "PackageNewVersion": "10.0.5", + "PackageReplacements": null + } + } + }, + { + "incidentId": "1876bbae-2d8e-419c-aedc-f4b0d63ad5ee", + "ruleId": "NuGet.0002", + "projectPath": "AutoBidder.csproj", + "state": "Active", + "location": { + "snippetModel": { + "unrestricted": "Microsoft.AspNetCore.Identity.EntityFrameworkCore, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.AspNetCore.Identity.EntityFrameworkCore, and replace with new package Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.5", + "protected": "Microsoft.AspNetCore.Identity.EntityFrameworkCore, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.AspNetCore.Identity.EntityFrameworkCore, and replace with new package Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.5" + }, + "kind": "File", + "path": "AutoBidder.csproj", + "snippet": "Microsoft.AspNetCore.Identity.EntityFrameworkCore, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.AspNetCore.Identity.EntityFrameworkCore, and replace with new package Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.5", + "protectedSnippet": "Microsoft.AspNetCore.Identity.EntityFrameworkCore, 8.0.0\n\nRaccomandazione:\n\nRemove Microsoft.AspNetCore.Identity.EntityFrameworkCore, and replace with new package Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.5", + "label": "Microsoft.AspNetCore.Identity.EntityFrameworkCore 8.0.0", + "properties": { + "PackageId": "Microsoft.AspNetCore.Identity.EntityFrameworkCore", + "PackageVersion": "8.0.0", + "PackageNewVersion": "10.0.5", + "PackageReplacements": null + } + } + }, + { + "incidentId": "ad92ba91-4bd4-46fa-8249-f369bb27e7d6", + "ruleId": "Project.0002", + "projectPath": "AutoBidder.csproj", + "state": "Active", + "location": { + "snippetModel": { + "unrestricted": "Framework di destinazione corrente: net8.0\nFramework di destinazione consigliato: net10.0", + "protected": "Framework di destinazione corrente: net8.0\nFramework di destinazione consigliato: net10.0" + }, + "kind": "File", + "path": "AutoBidder.csproj", + "snippet": "Framework di destinazione corrente: net8.0\nFramework di destinazione consigliato: net10.0", + "protectedSnippet": "Framework di destinazione corrente: net8.0\nFramework di destinazione consigliato: net10.0", + "properties": { + "CurrentTargetFramework": "net8.0", + "RecommendedTargetFramework": "net10.0" + } + } + } + ], + "features": [] + } + ], + "rules": { + "NuGet.0002": { + "id": "NuGet.0002", + "isFeature": false, + "description": "Per il framework di destinazione selezionato \u00E8 consigliato l\u0027aggiornamento del pacchetto NuGet.\n\n\u00C8 consigliabile che i pacchetti .NET standard abbiano versioni corrispondenti alla versione di .NET a cui \u00E8 destinato il progetto.\n\nAlcuni altri pacchetti sono anche noti per funzionare meglio con i framework di destinazione selezionati.", + "label": "\u00C8 consigliabile eseguire l\u0027aggiornamento del pacchetto NuGet", + "severity": "Potential", + "effort": 1, + "links": [ + { + "url": "https://go.microsoft.com/fwlink/?linkid=2262530", + "isCustom": false + } + ] + }, + "Project.0002": { + "id": "Project.0002", + "isFeature": false, + "description": "Il framework di destinazione del progetto devono essere sostituiti con il nuovo framework di destinazione selezionato per questo aggiornamento.\n\nDurante l\u0027aggiornamento, il framework di destinazione verr\u00E0 modificato in base alla piattaforma corrispondente, se applicabile. In alcuni casi il progetto avr\u00E0 pi\u00F9 framework di destinazione dopo l\u0027aggiornamento se prima usava funzionalit\u00E0 che ora dispongono di piattaforme proprie nelle versioni moderne di .NET Framework (Windows, iOS, Android e cos\u00EC via).", + "label": "\u00C8 necessario modificare i framework di destinazione del progetto", + "severity": "Mandatory", + "effort": 1, + "links": [ + { + "title": "Panoramica del trasferimento da .NET Framework a .NET", + "url": "https://go.microsoft.com/fwlink/?linkid=2265227", + "isCustom": false + }, + { + "title": "SDK di progetto .NET", + "url": "https://go.microsoft.com/fwlink/?linkid=2265226", + "isCustom": false + } + ] + } + } +} \ No newline at end of file diff --git a/.github/upgrades/assessment.md b/.github/upgrades/assessment.md new file mode 100644 index 0000000..60afeec --- /dev/null +++ b/.github/upgrades/assessment.md @@ -0,0 +1,136 @@ +# Projects and dependencies analysis + +This document provides a comprehensive overview of the projects and their dependencies in the context of upgrading to .NETCoreApp,Version=v10.0. + +## Table of Contents + +- [Executive Summary](#executive-Summary) + - [Highlevel Metrics](#highlevel-metrics) + - [Projects Compatibility](#projects-compatibility) + - [Package Compatibility](#package-compatibility) + - [API Compatibility](#api-compatibility) +- [Aggregate NuGet packages details](#aggregate-nuget-packages-details) +- [Top API Migration Challenges](#top-api-migration-challenges) + - [Technologies and Features](#technologies-and-features) + - [Most Frequent API Issues](#most-frequent-api-issues) +- [Projects Relationship Graph](#projects-relationship-graph) +- [Project Details](#project-details) + + - [AutoBidder.csproj](#autobiddercsproj) + + +## Executive Summary + +### Highlevel Metrics + +| Metric | Count | Status | +| :--- | :---: | :--- | +| Total Projects | 1 | All require upgrade | +| Total NuGet Packages | 3 | 2 need upgrade | +| Total Code Files | 50 | | +| Total Code Files with Incidents | 1 | | +| Total Lines of Code | 14361 | | +| Total Number of Issues | 3 | | +| Estimated LOC to modify | 0+ | at least 0,0% of codebase | + +### Projects Compatibility + +| Project | Target Framework | Difficulty | Package Issues | API Issues | Est. LOC Impact | Description | +| :--- | :---: | :---: | :---: | :---: | :---: | :--- | +| [AutoBidder.csproj](#autobiddercsproj) | net8.0 | 🟒 Low | 2 | 0 | | AspNetCore, Sdk Style = True | + +### Package Compatibility + +| Status | Count | Percentage | +| :--- | :---: | :---: | +| βœ… Compatible | 1 | 33,3% | +| ⚠️ Incompatible | 0 | 0,0% | +| πŸ”„ Upgrade Recommended | 2 | 66,7% | +| ***Total NuGet Packages*** | ***3*** | ***100%*** | + +### API Compatibility + +| Category | Count | Impact | +| :--- | :---: | :--- | +| πŸ”΄ Binary Incompatible | 0 | High - Require code changes | +| 🟑 Source Incompatible | 0 | Medium - Needs re-compilation and potential conflicting API error fixing | +| πŸ”΅ Behavioral change | 0 | Low - Behavioral changes that may require testing at runtime | +| βœ… Compatible | 0 | | +| ***Total APIs Analyzed*** | ***0*** | | + +## Aggregate NuGet packages details + +| Package | Current Version | Suggested Version | Projects | Description | +| :--- | :---: | :---: | :--- | :--- | +| Microsoft.AspNetCore.Identity.EntityFrameworkCore | 8.0.0 | 10.0.5 | [AutoBidder.csproj](#autobiddercsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | +| Microsoft.EntityFrameworkCore.Sqlite | 8.0.0 | 10.0.5 | [AutoBidder.csproj](#autobiddercsproj) | È consigliabile eseguire l'aggiornamento del pacchetto NuGet | +| Npgsql.EntityFrameworkCore.PostgreSQL | 8.0.0 | | [AutoBidder.csproj](#autobiddercsproj) | βœ…Compatible | + +## Top API Migration Challenges + +### Technologies and Features + +| Technology | Issues | Percentage | Migration Path | +| :--- | :---: | :---: | :--- | + +### Most Frequent API Issues + +| API | Count | Percentage | Category | +| :--- | :---: | :---: | :--- | + +## Projects Relationship Graph + +Legend: +πŸ“¦ SDK-style project +βš™οΈ Classic project + +```mermaid +flowchart LR + P1["πŸ“¦ AutoBidder.csproj
net8.0"] + click P1 "#autobiddercsproj" + +``` + +## Project Details + + +### AutoBidder.csproj + +#### Project Info + +- **Current Target Framework:** net8.0 +- **Proposed Target Framework:** net10.0 +- **SDK-style**: True +- **Project Kind:** AspNetCore +- **Dependencies**: 0 +- **Dependants**: 0 +- **Number of Files**: 76 +- **Number of Files with Incidents**: 1 +- **Lines of Code**: 14361 +- **Estimated LOC to modify**: 0+ (at least 0,0% of the project) + +#### Dependency Graph + +Legend: +πŸ“¦ SDK-style project +βš™οΈ Classic project + +```mermaid +flowchart TB + subgraph current["AutoBidder.csproj"] + MAIN["πŸ“¦ AutoBidder.csproj
net8.0"] + click MAIN "#autobiddercsproj" + end + +``` + +### API Compatibility + +| Category | Count | Impact | +| :--- | :---: | :--- | +| πŸ”΄ Binary Incompatible | 0 | High - Require code changes | +| 🟑 Source Incompatible | 0 | Medium - Needs re-compilation and potential conflicting API error fixing | +| πŸ”΅ Behavioral change | 0 | Low - Behavioral changes that may require testing at runtime | +| βœ… Compatible | 0 | | +| ***Total APIs Analyzed*** | ***0*** | | + diff --git a/.github/upgrades/execution-log.md b/.github/upgrades/execution-log.md new file mode 100644 index 0000000..42fa5b1 --- /dev/null +++ b/.github/upgrades/execution-log.md @@ -0,0 +1,69 @@ + +## [2026-03-31 20:58] TASK-001: Verify Prerequisites + +Status: Complete + +- **Verified**: + - .NET 10.0 SDK is installed and available + - No global.json file present, no conflicts with net10.0 + - Current branch is `upgrade-to-NET10` + +### Outcome +Success - All prerequisites verified successfully. + + +## [2026-03-31 21:05] TASK-002: Update Target Framework + +Status: Complete + +- **Verified**: AutoBidder.csproj now contains `net10.0` at line 4 +- **Files Modified**: Mimante/AutoBidder.csproj +- **Code Changes**: Updated TargetFramework from net8.0 to net10.0 + +### Outcome +Success - Target framework updated to net10.0. + + +## [2026-03-31 21:10] TASK-003: Update NuGet Packages + +Status: Complete + +- **Verified**: + - Microsoft.AspNetCore.Identity.EntityFrameworkCore updated to 10.0.5 + - Microsoft.EntityFrameworkCore.Sqlite updated to 10.0.5 + - Npgsql.EntityFrameworkCore.PostgreSQL updated to 10.0.1 (compatible with EF Core 10) + - dotnet restore completed with no dependency conflicts +- **Files Modified**: Mimante/AutoBidder.csproj +- **Code Changes**: Updated 3 PackageReference versions in AutoBidder.csproj + +### Outcome +Success - All NuGet packages updated and restored successfully. + + +## [2026-03-31 21:14] TASK-004: Build and Fix Compilation Errors + +Status: Complete + +- **Verified**: Solution builds with 0 errors on first attempt +- **Build Status**: Successful: 0 errors + +### Outcome +Success - Solution builds successfully with .NET 10.0 and all updated packages. + + +## [2026-03-31 21:19] TASK-005: Commit and Final Validation + +Status: Complete + +- **Verified**: + - All success criteria from Plan Β§11 met + - AutoBidder.csproj targets net10.0 + - All 3 NuGet packages updated to target versions + - Solution builds with 0 errors + - No dependency conflicts + - No security vulnerabilities +- **Commits**: 0db3c51: "Upgrade to .NET 10.0 β€” update framework and packages" + +### Outcome +Success - All changes committed. Upgrade to .NET 10.0 complete. + diff --git a/.github/upgrades/execution_log.md b/.github/upgrades/execution_log.md new file mode 100644 index 0000000..28eb0d4 --- /dev/null +++ b/.github/upgrades/execution_log.md @@ -0,0 +1,43 @@ +# Execution Log — .NET 10.0 Upgrade + +## Summary + +- **Status**: ? Complete +- **Branch**: `upgrade-to-NET10` +- **Commit**: `0db3c51` — "Upgrade to .NET 10.0 — update framework and packages" +- **Total Tasks**: 5/5 completed, 0 failed, 0 skipped + +--- + +## Task Execution Log + +### TASK-001: Verify Prerequisites ? +- .NET 10 SDK: installed and available +- global.json: no file found, no conflicts +- Branch: `upgrade-to-NET10` confirmed + +### TASK-002: Update Target Framework ? +- Updated `AutoBidder.csproj` line 4: `net8.0` ? `net10.0` + +### TASK-003: Update NuGet Packages ? +- `Microsoft.AspNetCore.Identity.EntityFrameworkCore`: 8.0.0 ? 10.0.5 +- `Microsoft.EntityFrameworkCore.Sqlite`: 8.0.0 ? 10.0.5 +- `Npgsql.EntityFrameworkCore.PostgreSQL`: 8.0.0 ? 10.0.1 +- `dotnet restore` completed with 0 dependency conflicts + +### TASK-004: Build and Fix Compilation Errors ? +- Build succeeded on first attempt with 0 errors +- No compilation fixes needed + +### TASK-005: Commit and Final Validation ? +- All Plan §11 success criteria verified +- Committed: `0db3c51` on `upgrade-to-NET10` + +--- + +## Files Modified + +- `Mimante/AutoBidder.csproj` — TargetFramework + 3 PackageReference versions +- `.github/upgrades/assessment.md` — Created during analysis +- `.github/upgrades/plan.md` — Created during planning +- `.github/upgrades/tasks.md` — Created and tracked during execution diff --git a/.github/upgrades/plan.md b/.github/upgrades/plan.md new file mode 100644 index 0000000..cce47e3 --- /dev/null +++ b/.github/upgrades/plan.md @@ -0,0 +1,318 @@ +# .NET 10.0 Upgrade Plan — AutoBidder Solution + +## Table of Contents + +- [1. Executive Summary](#1-executive-summary) +- [2. Migration Strategy](#2-migration-strategy) +- [3. Detailed Dependency Analysis](#3-detailed-dependency-analysis) +- [4. Project-by-Project Plans](#4-project-by-project-plans) + - [4.1 AutoBidder.csproj](#41-autobiddercsproj) +- [5. Package Update Reference](#5-package-update-reference) +- [6. Breaking Changes Catalog](#6-breaking-changes-catalog) +- [7. Risk Management](#7-risk-management) +- [8. Testing & Validation Strategy](#8-testing--validation-strategy) +- [9. Complexity & Effort Assessment](#9-complexity--effort-assessment) +- [10. Source Control Strategy](#10-source-control-strategy) +- [11. Success Criteria](#11-success-criteria) + +--- + +## 1. Executive Summary + +### Scenario +Upgrade the **AutoBidder** Blazor/ASP.NET Core solution from **.NET 8.0** to **.NET 10.0 (LTS)**. + +### Scope +| Metric | Value | +|---|---| +| Total Projects | 1 | +| Total NuGet Packages | 3 (2 need upgrade, 1 compatible) | +| Total Lines of Code | 14,361 | +| Total Code Files | 50 | +| API Incompatibilities | 0 | +| Security Vulnerabilities | 0 | +| Estimated LOC Impact | 0+ (minimal) | + +### Target State +- All projects targeting `net10.0` +- All NuGet packages updated to .NET 10 compatible versions +- Solution builds with 0 errors +- No security vulnerabilities + +### Selected Strategy +**All-At-Once Strategy** — All projects upgraded simultaneously in a single atomic operation. + +**Rationale**: +- 1 project (small solution) +- Currently on .NET 8.0 (modern SDK-style) +- Zero project-to-project dependencies +- All packages have known target framework versions available +- No API incompatibilities detected +- No security vulnerabilities + +### Complexity Classification +**Simple** — 1 project, dependency depth 0, no high-risk indicators, no vulnerabilities. + +**Iteration strategy**: Fast batch (2-3 detail iterations covering all sections). + +### Critical Issues +- ?? `Npgsql.EntityFrameworkCore.PostgreSQL` 8.0.0 is marked compatible but has no suggested new version — verify compatibility with EF Core 10.0.5 at build time. + +## 2. Migration Strategy + +### Approach: All-At-Once + +The entire solution is upgraded in a **single coordinated atomic operation**. There are no intermediate states — the project file, all package references, and any required code modifications are applied together. + +### Justification +- **1 project** — no dependency ordering complexity +- **0 inter-project dependencies** — no phasing required +- **0 API incompatibilities** — minimal risk of breaking changes +- **Low difficulty** rating from assessment +- **SDK-style project** — clean project file structure +- All packages have target versions or are compatible + +### Execution Approach + +All operations are performed as a unified upgrade: + +1. Update `TargetFramework` in `AutoBidder.csproj` from `net8.0` to `net10.0` +2. Update all NuGet package references to their target versions +3. Restore dependencies +4. Build the solution and fix all compilation errors +5. Verify solution builds with 0 errors + +No parallel vs sequential decision is needed — there is only one project. + +## 3. Detailed Dependency Analysis + +### Dependency Graph + +The solution contains a single project with no inter-project dependencies. + +``` +Level 0 (Foundation): + ??? AutoBidder.csproj (AspNetCore, Blazor) + ??? Microsoft.AspNetCore.Identity.EntityFrameworkCore 8.0.0 + ??? Microsoft.EntityFrameworkCore.Sqlite 8.0.0 + ??? Npgsql.EntityFrameworkCore.PostgreSQL 8.0.0 +``` + +### Project Groupings + +Since there is only 1 project with 0 dependencies, all work is performed in a **single atomic operation** with no phasing required. + +| Phase | Projects | Description | +|---|---|---| +| Phase 1: Atomic Upgrade | AutoBidder.csproj | Framework + packages upgrade, build, fix errors | + +### Critical Path +There is no critical path — the single project is both leaf and root. The entire upgrade is a single step. + +### Circular Dependencies +None detected. + +## 4. Project-by-Project Plans + +### 4.1 AutoBidder.csproj + +#### Current State + +| Attribute | Value | +|---|---| +| Target Framework | `net8.0` | +| Project Kind | AspNetCore (Blazor) | +| SDK-style | Yes | +| Lines of Code | 14,361 | +| Code Files | 50 (76 total files) | +| NuGet Packages | 3 | +| Project Dependencies | 0 | +| Dependants | 0 | +| Risk Level | ?? Low | + +#### Target State + +| Attribute | Value | +|---|---| +| Target Framework | `net10.0` | +| Updated Packages | 2 of 3 | + +#### Migration Steps + +**1. Prerequisites** +- .NET 10 SDK installed ? +- No `global.json` to update ? + +**2. Framework Update** +- Update `TargetFramework` property in `AutoBidder.csproj` from `net8.0` to `net10.0` + +**3. Package Updates** + +| Package | Current Version | Target Version | Reason | +|---|---|---|---| +| Microsoft.AspNetCore.Identity.EntityFrameworkCore | 8.0.0 | 10.0.5 | Upgrade recommended for .NET 10 compatibility | +| Microsoft.EntityFrameworkCore.Sqlite | 8.0.0 | 10.0.5 | Upgrade recommended for .NET 10 compatibility | +| Npgsql.EntityFrameworkCore.PostgreSQL | 8.0.0 | (keep) | ? Compatible — verify at build time with EF Core 10.0.5 | + +**4. Expected Breaking Changes** +- No API incompatibilities detected by assessment +- Potential behavioral changes from EF Core 8 ? 10 (see §6 Breaking Changes Catalog) +- Potential ASP.NET Core / Blazor configuration or middleware changes + +**5. Code Modifications** +- No code modifications identified by the assessment (0 estimated LOC impact) +- Compilation errors (if any) will be discovered and fixed during the build step + +**6. Validation Checklist** +- [ ] `AutoBidder.csproj` targets `net10.0` +- [ ] All package references updated to target versions +- [ ] Solution restores without dependency conflicts +- [ ] Solution builds with 0 errors +- [ ] No security vulnerabilities + +## 5. Package Update Reference + +### Common Package Updates (affecting AutoBidder.csproj) + +| Package | Current | Target | Update Reason | +|---|---|---|---| +| Microsoft.AspNetCore.Identity.EntityFrameworkCore | 8.0.0 | 10.0.5 | Framework compatibility — align with .NET 10 | +| Microsoft.EntityFrameworkCore.Sqlite | 8.0.0 | 10.0.5 | Framework compatibility — align with .NET 10 | + +### Compatible Packages (no update required) + +| Package | Current Version | Status | +|---|---|---| +| Npgsql.EntityFrameworkCore.PostgreSQL | 8.0.0 | ? Compatible — verify at build time that it works with EF Core 10.0.5 | + +### Notes +- All EF Core-related packages should align to the same major version where possible +- `Npgsql.EntityFrameworkCore.PostgreSQL` 8.0.0 is marked compatible by the assessment; however, if build errors occur related to EF Core version mismatch, investigate whether a newer Npgsql version is required + +## 6. Breaking Changes Catalog + +The assessment detected **0 API incompatibilities**. However, the following areas should be monitored during the build and test phases: + +### Framework Breaking Changes (.NET 8 ? .NET 10) + +| Area | Risk | Description | +|---|---|---| +| ASP.NET Core / Blazor | Low | Possible middleware, routing, or configuration changes between .NET 8 and .NET 10 | +| Entity Framework Core 8 ? 10 | Low | Possible behavioral changes in query translation, migrations, or model building | +| Base Class Library (BCL) | Low | Minor API behavioral changes possible | + +### Package-Specific Considerations + +| Package | Consideration | +|---|---| +| Npgsql.EntityFrameworkCore.PostgreSQL 8.0.0 | Verify compatibility with EF Core 10.0.5 — if incompatible, investigate newer Npgsql version | +| Microsoft.AspNetCore.Identity.EntityFrameworkCore 10.0.5 | Identity API changes possible between major versions | + +### Discovery Approach +Since no specific breaking changes were identified, the primary discovery mechanism is: +1. Build the solution after all updates +2. Analyze compilation errors +3. Fix identified issues referencing .NET 10 migration documentation + +## 7. Risk Management + +### Risk Assessment + +| Project | Risk Level | Description | Mitigation | +|---|---|---|---| +| AutoBidder.csproj | ?? Low | Single project, 0 API issues, 2 straightforward package updates | Standard upgrade process; rollback via Git if needed | + +### Specific Risks + +| Risk | Probability | Impact | Mitigation | +|---|---|---|---| +| Npgsql EF Core compatibility | Low | Medium | If build fails due to EF Core version mismatch, upgrade Npgsql to a .NET 10-compatible version | +| Undiscovered breaking changes in Blazor/ASP.NET Core | Low | Low | Fix compilation errors during build step; consult .NET 10 migration guide | +| EF Core migration compatibility | Low | Medium | Verify existing database migrations still apply correctly with EF Core 10 | + +### Contingency Plans + +- **Build failures from Npgsql**: Search for a newer version of `Npgsql.EntityFrameworkCore.PostgreSQL` compatible with EF Core 10. If none exists, evaluate alternative PostgreSQL providers. +- **Unexpected compilation errors**: Use .NET 10 breaking changes documentation to resolve. The upgrade branch isolates all changes — the `docker` branch remains untouched. +- **Rollback**: Discard the `upgrade-to-NET10` branch and return to `docker` branch. + +## 8. Testing & Validation Strategy + +### Build Validation + +After the atomic upgrade: +- [ ] `dotnet restore` completes without dependency conflicts +- [ ] `dotnet build` completes with 0 errors +- [ ] No new warnings related to deprecated APIs + +### Test Execution + +No dedicated test projects were identified in the solution. Validation relies on: +1. Successful build with 0 errors +2. No dependency conflicts +3. No security vulnerabilities + +> ?? **Recommendation**: If there are test projects not captured in the solution file, or integration/manual tests, execute them after the upgrade to verify runtime behavior — particularly around Entity Framework Core database operations and Blazor component rendering. + +## 9. Complexity & Effort Assessment + +### Per-Project Complexity + +| Project | Complexity | Dependencies | Package Updates | Risk | Notes | +|---|---|---|---|---|---| +| AutoBidder.csproj | ?? Low | 0 projects | 2 packages | Low | Single project, no API issues, straightforward upgrade | + +### Overall Assessment + +| Factor | Rating | +|---|---| +| Solution Complexity | Low (1 project, 0 dependencies) | +| Package Update Complexity | Low (2 packages with known target versions) | +| Breaking Change Risk | Low (0 API incompatibilities detected) | +| Testing Complexity | Low (build verification only — no test projects) | +| Overall Upgrade Complexity | **Low** | + +## 10. Source Control Strategy + +### Branching + +| Parameter | Value | +|---|---| +| Source branch | `docker` | +| Upgrade branch | `upgrade-to-NET10` | +| Strategy | Single branch for all upgrade changes | + +### Commit Approach + +**Single commit** for the entire atomic upgrade operation: +- Framework update, package updates, compilation fixes — all in one commit +- Commit message: `Upgrade to .NET 10.0 — update framework and packages` + +### Merge Process + +1. Verify solution builds with 0 errors on `upgrade-to-NET10` +2. Merge `upgrade-to-NET10` into `docker` (or open a Pull Request for review) +3. Delete `upgrade-to-NET10` branch after successful merge + +## 11. Success Criteria + +### Technical Criteria + +- [ ] `AutoBidder.csproj` targets `net10.0` +- [ ] `Microsoft.AspNetCore.Identity.EntityFrameworkCore` updated to 10.0.5 +- [ ] `Microsoft.EntityFrameworkCore.Sqlite` updated to 10.0.5 +- [ ] `Npgsql.EntityFrameworkCore.PostgreSQL` compatible (build succeeds) +- [ ] Solution builds with 0 errors +- [ ] No package dependency conflicts +- [ ] No security vulnerabilities + +### Quality Criteria + +- [ ] Code quality maintained (no degraded patterns) +- [ ] No new compiler warnings from deprecated APIs + +### Process Criteria + +- [ ] All-At-Once strategy followed (single atomic operation) +- [ ] All changes on `upgrade-to-NET10` branch +- [ ] Single commit for entire upgrade diff --git a/.github/upgrades/tasks.md b/.github/upgrades/tasks.md new file mode 100644 index 0000000..2e040dd --- /dev/null +++ b/.github/upgrades/tasks.md @@ -0,0 +1,70 @@ +# .NET 10.0 Upgrade — Execution Tasks + +## Progress Dashboard + +| Metric | Value | +|---|---| +| Total Tasks | 5 | +| Completed | 0 | +| In Progress | 0 | +**Progress**: 5/5 tasks complete (100%) ![100%](https://progress-bar.xyz/100) +| Not Started | 5 | + +--- + +## Tasks + +### [?] TASK-001: Verify Prerequisites *(Completed: 2026-03-31 20:59)* +**Scope**: Environment validation +**References**: Plan §1, §4.1 + +**Actions:** +- [?] (1) Verify .NET 10 SDK is installed and available on the machine +- [?] (2) Verify no `global.json` file conflicts with target framework `net10.0` +- [?] (3) Verify current branch is `upgrade-to-NET10` + +--- + +### [?] TASK-002: Update Target Framework *(Completed: 2026-03-31 21:05)* +**Scope**: AutoBidder.csproj +**References**: Plan §2, §4.1 + +**Actions:** +- [?] (1) Update `TargetFramework` property in `AutoBidder.csproj` from `net8.0` to `net10.0` +- [?] (2) Verify the project file contains `net10.0` + +--- + +### [?] TASK-003: Update NuGet Packages *(Completed: 2026-03-31 21:11)* +**Scope**: AutoBidder.csproj +**References**: Plan §5 + +**Actions:** +- [?] (1) Update `Microsoft.AspNetCore.Identity.EntityFrameworkCore` from 8.0.0 to 10.0.5 +- [?] (2) Update `Microsoft.EntityFrameworkCore.Sqlite` from 8.0.0 to 10.0.5 +- [?] (3) Verify `Npgsql.EntityFrameworkCore.PostgreSQL` 8.0.0 compatibility ? if incompatible with EF Core 10, find and update to a compatible version +- [?] (4) Restore packages and verify no dependency conflicts + +--- + +### [?] TASK-004: Build and Fix Compilation Errors *(Completed: 2026-03-31 21:15)* +**Scope**: AutoBidder.sln +**References**: Plan §6, §8 + +**Actions:** +- [?] (1) Build the solution +- [?] (2) If build errors exist, analyze and fix all compilation errors +- [?] (3) Rebuild and verify solution builds with 0 errors + +--- + +### [?] TASK-005: Commit and Final Validation *(Completed: 2026-03-31 21:20)* +**Scope**: Repository +**References**: Plan §10, §11 + +**Actions:** +- [?] (1) Verify all success criteria from Plan ?11 are met +- [?] (2) Stage all changes and commit with message: `Upgrade to .NET 10.0 ? update framework and packages` +- [?] (3) Verify commit succeeded + +--- diff --git a/Mimante/AutoBidder.csproj b/Mimante/AutoBidder.csproj index 4ac6c0c..1073314 100644 --- a/Mimante/AutoBidder.csproj +++ b/Mimante/AutoBidder.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable enable AutoBidder @@ -65,9 +65,9 @@ - - - + + + @@ -155,3 +155,5 @@ + + diff --git a/Mimante/Dockerfile b/Mimante/Dockerfile index 76336dd..b4464a8 100644 --- a/Mimante/Dockerfile +++ b/Mimante/Dockerfile @@ -1,7 +1,7 @@ # ============================================ # STAGE 1: Build # ============================================ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src @@ -30,7 +30,7 @@ RUN dotnet publish "./AutoBidder.csproj" \ # ============================================ # STAGE 3: Final Runtime # ============================================ -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final +FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS final WORKDIR /app # Install curl for healthcheck and sqlite3 @@ -71,8 +71,8 @@ HEALTHCHECK --interval=30s --timeout=30s --start-period=90s --retries=5 \ # Labels for metadata LABEL org.opencontainers.image.title="AutoBidder" \ - org.opencontainers.image.description="Sistema automatizzato gestione aste Bidoo - Blazor .NET 8" \ - org.opencontainers.image.version="1.2.0" \ +org.opencontainers.image.description="Sistema automatizzato gestione aste Bidoo - Blazor .NET 10" \ +org.opencontainers.image.version="1.2.0" \ org.opencontainers.image.vendor="Alby96" \ org.opencontainers.image.source="https://gitea.encke-hake.ts.net/Alby96/Mimante"