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 <noreply@anthropic.com>
This commit is contained in:
@@ -3,8 +3,22 @@
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||
<!-- Lokaler Feed für Pakete aus unseren eigenen Schwester-Projekten (LicenseLabrador).
|
||||
Bewusst ein Paket im Repo statt einer Projektreferenz nach ..\..\LicenseLabrador:
|
||||
PolyTrader muss eigenständig bauen, ohne dass das Schwester-Repo daneben liegt.
|
||||
Neues SDK übernehmen: siehe lib/nuget/README.md. -->
|
||||
<add key="local" value="lib/nuget" />
|
||||
</packageSources>
|
||||
<!-- Source-Mapping verhindert Dependency Confusion: unsere LicenseLabrador.*-Pakete werden
|
||||
ausschließlich lokal aufgelöst und können nicht von einem gleichnamigen Paket auf
|
||||
nuget.org verdrängt werden. Alles andere kommt weiterhin von nuget.org. -->
|
||||
<packageSourceMapping>
|
||||
<clear />
|
||||
<packageSource key="local">
|
||||
<package pattern="LicenseLabrador.*" />
|
||||
</packageSource>
|
||||
<packageSource key="nuget.org">
|
||||
<package pattern="*" />
|
||||
</packageSource>
|
||||
</packageSourceMapping>
|
||||
</configuration>
|
||||
|
||||
@@ -76,6 +76,10 @@
|
||||
<!-- Angehoben, um Downgrade-Konflikt (EF Core zieht 8.0.2) aufzulösen. -->
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.2" />
|
||||
<PackageReference Include="ScottPlot" Version="5.1.59" />
|
||||
<!-- Lizenz-SDK (LicenseLabrador) als NuGet-Paket aus dem lokalen Feed lib/nuget.
|
||||
Bewusst KEINE Projektreferenz nach ..\..\LicenseLabrador: die beiden Repos bleiben
|
||||
eigenständig, PolyTrader baut ohne das Schwester-Repo. Aktualisieren: lib/nuget/README.md. -->
|
||||
<PackageReference Include="LicenseLabrador.Client" Version="1.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -91,9 +95,6 @@
|
||||
<ProjectReference Include="src\PolyTrader.Modules.ResolutionFarming\PolyTrader.Modules.ResolutionFarming.csproj" />
|
||||
<ProjectReference Include="src\PolyTrader.Modules.Supervisor\PolyTrader.Modules.Supervisor.csproj" />
|
||||
<ProjectReference Include="src\PolyTrader.Modules.Accounting\PolyTrader.Modules.Accounting.csproj" />
|
||||
<!-- Lizenz-SDK (LicenseLabrador). Cross-Repo-Projektreferenz auf das Schwester-Repo unter
|
||||
J:\Softwareprojekte\LicenseLabrador, damit Fixes am SDK ohne Kopie einfließen. -->
|
||||
<ProjectReference Include="..\..\LicenseLabrador\client-dotnet\LicenseLabrador.Client\LicenseLabrador.Client.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+8
-2
@@ -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()
|
||||
/// <summary>
|
||||
/// Prüft den eingegebenen Schlüssel gegen den Lizenzserver. Bewusst NICHT „Validate" genannt:
|
||||
/// das würde <see cref="ContainerControl.Validate()"/> verdecken (CS0108), sodass ein Aufruf
|
||||
/// über eine <see cref="Form"/>-Referenz statt der Control-Validierung einen Netzwerk-Call
|
||||
/// auslösen würde.
|
||||
/// </summary>
|
||||
private void ValidateKey()
|
||||
{
|
||||
string key = txtKey.Text.Trim();
|
||||
if (string.IsNullOrWhiteSpace(key))
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
# Lokaler NuGet-Feed (`lib/nuget`)
|
||||
|
||||
Hier liegen Pakete aus unseren **eigenen Schwester-Projekten**, die PolyTrader benutzt.
|
||||
|
||||
## Warum ein Paket und keine Projektreferenz?
|
||||
|
||||
Ursprünglich verwies `PolyTrader.App.csproj` per `ProjectReference` direkt auf
|
||||
`..\..\LicenseLabrador\client-dotnet\...`. Das koppelt die Repos hart: PolyTrader
|
||||
baut dann nur noch auf einer Maschine, auf der LicenseLabrador zufällig daneben liegt
|
||||
— ein Build-Server oder das Zielland-System hätte den Build nicht mehr übersetzen können.
|
||||
|
||||
**Die Projekte bleiben eigenständig.** Deshalb wird das SDK als versioniertes
|
||||
NuGet-Paket in dieses Verzeichnis gelegt und mitversioniert. Ein reiner DLL-Verweis
|
||||
wäre nicht ausreichend gewesen: das Paket trägt die transitiven Abhängigkeiten
|
||||
(BouncyCastle.Cryptography, Microsoft.Win32.Registry,
|
||||
System.Security.Cryptography.ProtectedData, System.Text.Json) in seinen Metadaten,
|
||||
eine nackte DLL nicht.
|
||||
|
||||
`nuget.config` bindet dieses Verzeichnis als Quelle `local` ein. Das
|
||||
`packageSourceMapping` löst `LicenseLabrador.*` **ausschließlich** lokal auf, damit
|
||||
ein gleichnamiges Paket auf nuget.org unsere Version nicht verdrängen kann
|
||||
(Dependency Confusion).
|
||||
|
||||
## Neue SDK-Version übernehmen
|
||||
|
||||
1. Im LicenseLabrador-Repo die `<Version>` 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.
|
||||
Reference in New Issue
Block a user