From ab0a494f296427c8798d7c0cdae4c4082e1c6bd9 Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 5 Aug 2026 13:13:18 +0200 Subject: [PATCH] LicenseLabrador-SDK als lokales NuGet-Paket statt Cross-Repo-Projektreferenz PolyTrader.App.csproj verwies per ProjectReference nach ..\..\LicenseLabrador\client-dotnet\... und baute damit nur auf einer Maschine, auf der das Schwester-Repo danebenliegt. Auf dem Zielland-System waere der Build fehlgeschlagen. Stattdessen liegt das SDK als versioniertes Paket in lib/nuget und wird ueber die NuGet.Config-Quelle "local" aufgeloest. Ein DLL-Verweis haette nicht gereicht: das Paket traegt die transitiven Abhaengigkeiten (BouncyCastle, ProtectedData, System.Text.Json) in seinen Metadaten. packageSourceMapping bindet LicenseLabrador.* fest an den lokalen Feed, damit ein gleichnamiges Paket auf nuget.org unseres nicht verdraengt (Dependency Confusion). Enthaelt ausserdem die bereits vorgemerkte Umbenennung LicenseDialog.Validate -> ValidateKey: der alte Name verdeckte ContainerControl.Validate() (CS0108), ein Aufruf ueber eine Form-Referenz haette einen Netzwerk-Call ausgeloest statt zu validieren. Build und Tests gruen (438 Tests). Co-Authored-By: Claude Opus 5 --- NuGet.Config | 14 +++++++ PolyTrader.App.csproj | 7 ++-- Ui/LicenseDialog.cs | 10 ++++- lib/nuget/LicenseLabrador.Client.1.0.0.nupkg | Bin 0 -> 17046 bytes lib/nuget/README.md | 42 +++++++++++++++++++ 5 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 lib/nuget/LicenseLabrador.Client.1.0.0.nupkg create mode 100644 lib/nuget/README.md diff --git a/NuGet.Config b/NuGet.Config index b260a3f..6e49632 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -3,8 +3,22 @@ + + + + + + + + + diff --git a/PolyTrader.App.csproj b/PolyTrader.App.csproj index 49021e8..79e1528 100644 --- a/PolyTrader.App.csproj +++ b/PolyTrader.App.csproj @@ -76,6 +76,10 @@ + + @@ -91,9 +95,6 @@ - - \ No newline at end of file diff --git a/Ui/LicenseDialog.cs b/Ui/LicenseDialog.cs index 33dd3d6..e488b73 100644 --- a/Ui/LicenseDialog.cs +++ b/Ui/LicenseDialog.cs @@ -57,7 +57,7 @@ namespace PolyTraderSharp.Ui btnLimited.Text = "Schließen"; } - btnValidate.Click += (_, _) => Validate(); + btnValidate.Click += (_, _) => ValidateKey(); btnCopyHwId.Click += (_, _) => CopyHardwareId(); btnLimited.Click += (_, _) => { DialogResult = DialogResult.Cancel; Close(); }; AcceptButton = btnValidate; @@ -69,7 +69,13 @@ namespace PolyTraderSharp.Ui catch { return "(nicht ermittelbar)"; } } - private void Validate() + /// + /// Prüft den eingegebenen Schlüssel gegen den Lizenzserver. Bewusst NICHT „Validate" genannt: + /// das würde verdecken (CS0108), sodass ein Aufruf + /// über eine -Referenz statt der Control-Validierung einen Netzwerk-Call + /// auslösen würde. + /// + private void ValidateKey() { string key = txtKey.Text.Trim(); if (string.IsNullOrWhiteSpace(key)) diff --git a/lib/nuget/LicenseLabrador.Client.1.0.0.nupkg b/lib/nuget/LicenseLabrador.Client.1.0.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..fb9a23d666b7802f7a7955514858bb01c5a559aa GIT binary patch literal 17046 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 in + `client-dotnet/LicenseLabrador.Client/LicenseLabrador.Client.csproj` **anheben** + (gleiche Version zweimal zu packen führt zu stillen Cache-Treffern — NuGet + unterscheidet Pakete nur an der Versionsnummer). +2. Paket bauen: + + ``` + dotnet pack J:\Softwareprojekte\LicenseLabrador\client-dotnet\LicenseLabrador.Client\LicenseLabrador.Client.csproj -c Release -o J:\Softwareprojekte\PolytraderSharp\PolyTraderSharp\lib\nuget + ``` + +3. In `PolyTrader.App.csproj` die `Version` der `PackageReference` auf die neue + Nummer setzen. +4. Die alte `.nupkg` löschen, damit klar bleibt, welche Fassung gilt. +5. `dotnet build` + `dotnet test` — und die neue `.nupkg` mit committen. + +**Wichtig:** Die Änderung am SDK gehört zuerst ins LicenseLabrador-Repo und wird dort +committet. Dieses Verzeichnis ist nur die Auslieferung, nicht der Arbeitsort.