Phase 1: Solution auf .NET 10 und zentrale Paketverwaltung
Zielframework aller Projekte auf net10.0 (WinFormsHost: net10.0-windows), zentral in Directory.Build.props statt je csproj. SatelliteResourceLanguages ebenfalls zentralisiert. Neue Directory.Packages.props mit ManagePackageVersionsCentrally: 21 Pakete, Versionsangaben aus allen csproj entfernt. EF Core bleibt bewusst auf 9.0.18 mit Pomelo 9.0.0. Pomelo hat keine EF-Core-10-Version; 9.0.0 pinnt EntityFrameworkCore.Relational auf [9.0.0, 9.0.999]. Die EF-9-Pakete zielen auf net8.0 und laufen auf der net10.0-Runtime. Begruendung als Kommentar in Directory.Packages.props. Uebrige Pakete auf aktuellen Stand: Swashbuckle 10.2.3 (ohne Bruchstellen), Serilog 4.4.0, Microsoft.Extensions 10.0.10, Test-SDK 18.8.1, coverlet 10.0.1. Sicherheits-Pin: SQLitePCLRaw 2.1.12 statt transitiv 2.1.10 (GHSA-2m69-gcr7-jv3q, High). Dazu CentralPackageTransitivePinningEnabled. Build: 0 Fehler, 8 Warnungen (alle vorbestehend). Tests: 100 bestanden, 0 Fehler, 1 uebersprungen, Testhost net10.0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
```
|
||||
`<TargetFramework>` 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; `<TargetFramework>` 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
|
||||
|
||||
Reference in New Issue
Block a user