Inhaltsverzeichnis
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:
<?xml version="1.0"?> <package> <metadata> <id>OpenSsl.Native</id> <version>3.6.0</version> <authors>Ihr Name</authors> <description>OpenSSL 3.6.0 Native Libraries mit Post-Quantum Support</description> <tags>openssl cryptography post-quantum ml-dsa ml-kem</tags> </metadata> <files> <!-- Windows x64 --> <file src="win-x64\libcrypto-3-x64.dll" target="runtimes\win-x64\native\" /> <file src="win-x64\libssl-3-x64.dll" target="runtimes\win-x64\native\" /> <!-- Linux x64 --> <file src="linux-x64\libcrypto.so.3" target="runtimes\linux-x64\native\" /> <file src="linux-x64\libssl.so.3" target="runtimes\linux-x64\native\" /> </files> </package>
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:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> <add key="LocalFeed" value="C:\NuGetFeed" /> </packageSources> </configuration>
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:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <PackageId>OpenSsl.Native</PackageId> <Version>3.6.0</Version> <Authors>Ihr Name</Authors> <Description>OpenSSL 3.6.0 Native Libraries</Description> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup> <ItemGroup> <None Include="runtimes\**\*" Pack="true" PackagePath="runtimes\" /> </ItemGroup> </Project>
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
<!-- NuGet.config --> <configuration> <packageSources> <add key="InternalFeed" value="\\server\NuGetFeed" /> </packageSources> </configuration>
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
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: den 29.01.2026 um 15:14