====== 5.2 NuGet-Grundlagen ====== Diese Seite erklärt, was NuGet ist und wie Sie Pakete für native Libraries erstellen. ---- ===== Was ist NuGet? ===== **NuGet** ist der Paketmanager für .NET - vergleichbar mit: * npm für JavaScript * pip für Python * Maven für Java Ein NuGet-Paket (''.nupkg'') enthält: * Kompilierte DLLs * Metadaten (Name, Version, Autor) * Native Libraries (optional) ---- ===== Warum ein NuGet-Paket? ===== | Ohne NuGet | Mit NuGet | |------------|-----------| | DLLs manuell kopieren | ''dotnet add package ...'' | | Versionen händisch verwalten | Automatische Updates | | Jedes Projekt einzeln | Zentrales Repository | ---- ===== Paket-Struktur für native Libraries ===== NuGet unterstützt native DLLs über ''runtimes/'': MeinPaket.1.0.0.nupkg/ ├── lib/ │ └── net8.0/ │ └── MeinPaket.dll # .NET Wrapper ├── runtimes/ │ ├── win-x64/ │ │ └── native/ │ │ ├── libcrypto-3-x64.dll │ │ └── libssl-3-x64.dll │ └── linux-x64/ │ └── native/ │ ├── libcrypto.so.3 │ └── libssl.so.3 └── MeinPaket.nuspec ---- ===== Einfaches .nuspec Beispiel ===== Erstellen Sie eine Datei ''OpenSsl.Native.nuspec'': OpenSsl.Native 3.6.0 Ihr Name OpenSSL 3.6.0 Native Libraries mit Post-Quantum Support openssl cryptography post-quantum ml-dsa ml-kem ---- ===== Paket erstellen ===== ==== 1. Dateien vorbereiten ==== # Verzeichnisstruktur erstellen mkdir nuget-package mkdir nuget-package\win-x64 mkdir nuget-package\linux-x64 # DLLs kopieren copy "D:\Projects\openssl-3.6.0\bin\bin\libcrypto-3-x64.dll" nuget-package\win-x64\ copy "D:\Projects\openssl-3.6.0\bin\bin\libssl-3-x64.dll" nuget-package\win-x64\ # .nuspec erstellen (siehe oben) ==== 2. Paket bauen ==== cd nuget-package # NuGet CLI installieren (falls nicht vorhanden) winget install Microsoft.NuGet # Paket erstellen nuget pack OpenSsl.Native.nuspec # Ergebnis: OpenSsl.Native.3.6.0.nupkg ---- ===== Lokales NuGet-Feed ===== Für interne Nutzung können Sie ein lokales NuGet-Feed einrichten: ==== 1. Feed-Ordner erstellen ==== mkdir C:\NuGetFeed copy OpenSsl.Native.3.6.0.nupkg C:\NuGetFeed\ ==== 2. Feed in NuGet.config registrieren ==== Erstellen Sie ''NuGet.config'' im Projektordner: ==== 3. Paket verwenden ==== dotnet add package OpenSsl.Native --version 3.6.0 --source C:\NuGetFeed ---- ===== Mit .NET SDK Pack ===== Alternativ können Sie direkt aus dem .csproj packen: net8.0 OpenSsl.Native 3.6.0 Ihr Name OpenSSL 3.6.0 Native Libraries true Dann: dotnet pack -c Release ---- ===== Netzwerk-Feed einrichten ===== Für Teams: Feed auf Netzlaufwerk ==== Server-Seite ==== # Share erstellen (als Admin) New-SmbShare -Name "NuGetFeed" -Path "D:\NuGetFeed" -ReadAccess "Everyone" ==== Client-Seite ==== ---- ===== Tipps ===== **Versionierung:** * Semantic Versioning: ''MAJOR.MINOR.PATCH'' * OpenSSL 3.6.0 → Paket 3.6.0 * Eigene Fixes → 3.6.0.1, 3.6.0.2 **Keine Secrets in Paketen!** * Keine API-Keys * Keine Private Keys * Keine Passwörter in Konfigurationen ---- ===== Weiter zu ===== * [[.:verteilung:nuget-paket|NuGet-Paket veröffentlichen]] * [[.:verteilung:start|6. Verteilung]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//