diff --git a/Directory.Build.props b/Directory.Build.props index ca9a00a..0f40bc6 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,8 +1,14 @@ + + net10.0 latest enable enable false + + en diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000..883efc0 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,68 @@ + + + true + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/PLAN-Linux-Portierung.md b/docs/PLAN-Linux-Portierung.md index da3410c..b64a601 100644 --- a/docs/PLAN-Linux-Portierung.md +++ b/docs/PLAN-Linux-Portierung.md @@ -145,23 +145,36 @@ sind aussagekräftig. --- -## 3. Phase 1 — .NET 10 (1,5–2,5 PT) +## 3. Phase 1 — .NET 10 ✅ **erledigt (2026-08-06)** -Bewusst **vor** dem Avalonia-Umbau: eine Baustelle nach der anderen, und das Shell-Projekt -entsteht dann direkt auf dem Zielframework. +**Abnahme erreicht:** `dotnet build` → 0 Fehler, 8 Warnungen (alle vorbestehend, 2 weniger +als vorher). `dotnet test` → **100 bestanden, 0 Fehler, 1 übersprungen**, Testhost +`net10.0`. Alle Projekte laufen auf `net10.0`, WinFormsHost auf `net10.0-windows`. -### AP 1.1 — Zentrale Frameworkverwaltung -`Directory.Build.props` erweitern: -```xml -net10.0 -latest -enable -enable -``` -`` aus allen `.csproj` entfernen (Ausnahme: WinFormsHost → -`net10.0-windows`). Empfohlen: zugleich `Directory.Packages.props` mit -`ManagePackageVersionsCentrally` einführen — bei 7+ Projekten mit überlappenden Paketen -verhindert das künftige Versionsdrift. +Ergebnis gegenüber der Planung: + +| Erwartung | Tatsächlich | +|---|---| +| Swashbuckle 6.9 → 10.x „wahrscheinlichster Reibungspunkt", ggf. Wechsel auf `AddOpenApi()` | **Keine Bruchstelle.** Der genutzte API-Ausschnitt (`AddSwaggerGen`/`SwaggerDoc`/`UseSwagger`/`UseSwaggerUI`) ist stabil geblieben. Kein Umbau nötig. | +| EF Core 8 → 9 „überschaubar" | Bestätigt, keine Anpassung nötig | +| SQLite-Sicherheitswarnung „löst sich mit dem EF-Bump von selbst" | **Falsch** — EF Core 9.0.18 zieht SQLitePCLRaw 2.1.10, weiterhin von GHSA-2m69-gcr7-jv3q betroffen. Behoben über einen expliziten transitiven Pin auf 2.1.12. | + +Bewusst **vor** dem Avalonia-Umbau erledigt: eine Baustelle nach der anderen, und das +Shell-Projekt entsteht direkt auf dem Zielframework. + +### AP 1.1 — Zentrale Frameworkverwaltung ✅ +`Directory.Build.props` setzt `TargetFramework=net10.0` zentral; `` aus +allen `.csproj` entfernt (Ausnahme: WinFormsHost → `net10.0-windows`). Zusätzlich zentral: +`SatelliteResourceLanguages=en`, das bisher in vier Projekten einzeln stand. + +`Directory.Packages.props` mit `ManagePackageVersionsCentrally` eingeführt — 21 Pakete, +Versionen aus allen `.csproj` entfernt. Zusätzlich +`CentralPackageTransitivePinningEnabled`, um Sicherheits-Pins auf transitive +Abhängigkeiten setzen zu können. + +**Nicht angefasst:** `Spike/Spike.csproj` — leeres Restprojekt ohne Quelldateien, nicht in +der Solution, baut auch im Ist-Zustand nicht (`CS5001: keine Main-Methode`). Kandidat zum +Löschen, aber nicht Teil dieser Portierung. ### AP 1.2 — Paketmatrix @@ -178,7 +191,12 @@ verhindert das künftige Versionsdrift. | `Microsoft.Extensions.Http` / `.Hosting.Abstractions` / `.Logging.Abstractions` | 8.0.x | 10.0.x | | | `Microsoft.NET.Test.Sdk` / `xunit` / `Moq` / `coverlet` | aktuell | prüfen | | -### AP 1.3 — Erwartete Bruchstellen +Tatsächlich aufgelöste Versionen (verifiziert über `dotnet list package`): EF Core 9.0.18, +Pomelo 9.0.0, Serilog 4.4.0 / Extensions.Logging 10.0.0 / Sinks.File 7.0.0 / +Sinks.Console 6.1.1, Swashbuckle 10.2.3, Test-SDK 18.8.1, coverlet 10.0.1. +Sicherheits-Pin: SQLitePCLRaw 2.1.12 (statt transitiv 2.1.10). + +### AP 1.3 — Erwartete Bruchstellen *(Rückblick: keine eingetreten)* * **Swashbuckle 6.9 → 10.x** ist der wahrscheinlichste Reibungspunkt: geänderte API-Oberfläche, und ASP.NET Core 10 bringt mit `Microsoft.AspNetCore.OpenApi` eine eigene OpenAPI-Generierung mit. Betrifft `Api/ApiConfiguration.cs:19-20` und diff --git a/src/Predictalytics.Api/Predictalytics.Api.csproj b/src/Predictalytics.Api/Predictalytics.Api.csproj index 469787d..058eebd 100644 --- a/src/Predictalytics.Api/Predictalytics.Api.csproj +++ b/src/Predictalytics.Api/Predictalytics.Api.csproj @@ -1,15 +1,13 @@ - net8.0 Predictalytics.Api Library - en - + diff --git a/src/Predictalytics.Application.Tests/Predictalytics.Application.Tests.csproj b/src/Predictalytics.Application.Tests/Predictalytics.Application.Tests.csproj index 35d2cad..4b5bdf7 100644 --- a/src/Predictalytics.Application.Tests/Predictalytics.Application.Tests.csproj +++ b/src/Predictalytics.Application.Tests/Predictalytics.Application.Tests.csproj @@ -1,20 +1,17 @@ - net10.0 - enable - enable false - - - - - - - + + + + + + + @@ -28,4 +25,4 @@ - \ No newline at end of file + diff --git a/src/Predictalytics.Application/Predictalytics.Application.csproj b/src/Predictalytics.Application/Predictalytics.Application.csproj index 0f0bde0..3a71d36 100644 --- a/src/Predictalytics.Application/Predictalytics.Application.csproj +++ b/src/Predictalytics.Application/Predictalytics.Application.csproj @@ -1,12 +1,11 @@ - + - net8.0 Predictalytics.Application - + diff --git a/src/Predictalytics.Domain/Predictalytics.Domain.csproj b/src/Predictalytics.Domain/Predictalytics.Domain.csproj index fd86038..c7e06ea 100644 --- a/src/Predictalytics.Domain/Predictalytics.Domain.csproj +++ b/src/Predictalytics.Domain/Predictalytics.Domain.csproj @@ -1,7 +1,6 @@ - + - net8.0 Predictalytics.Domain diff --git a/src/Predictalytics.Infrastructure/Predictalytics.Infrastructure.csproj b/src/Predictalytics.Infrastructure/Predictalytics.Infrastructure.csproj index d3a2f15..dcf876b 100644 --- a/src/Predictalytics.Infrastructure/Predictalytics.Infrastructure.csproj +++ b/src/Predictalytics.Infrastructure/Predictalytics.Infrastructure.csproj @@ -1,26 +1,24 @@ - net8.0 Predictalytics.Infrastructure - en - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - + + + + + + + + diff --git a/src/Predictalytics.WinFormsHost/Predictalytics.WinFormsHost.csproj b/src/Predictalytics.WinFormsHost/Predictalytics.WinFormsHost.csproj index adbcb34..0b24b7a 100644 --- a/src/Predictalytics.WinFormsHost/Predictalytics.WinFormsHost.csproj +++ b/src/Predictalytics.WinFormsHost/Predictalytics.WinFormsHost.csproj @@ -2,29 +2,30 @@ WinExe - net8.0-windows + + net10.0-windows true Predictalytics.WinFormsHost - en SystemAware true app.manifest - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - - - - - - - + + + + + + + + + diff --git a/src/Predictalytics.Worker/Predictalytics.Worker.csproj b/src/Predictalytics.Worker/Predictalytics.Worker.csproj index b303bce..13be172 100644 --- a/src/Predictalytics.Worker/Predictalytics.Worker.csproj +++ b/src/Predictalytics.Worker/Predictalytics.Worker.csproj @@ -1,17 +1,15 @@ - net8.0 Predictalytics.Worker - en - + runtime; build; native; contentfiles; analyzers; buildtransitive all - +