Inhaltsverzeichnis
5.2 Osnove NuGet
Ta stran razlaga, kaj je NuGet in kako ustvarite pakete za nativne knjižnice.
Kaj je NuGet?
NuGet je upravljalnik paketov za .NET - primerljiv z:
- npm za JavaScript
- pip za Python
- Maven za Java
NuGet paket (.nupkg) vsebuje:
- Prevedene DLL-je
- Metapodatke (ime, različica, avtor)
- Nativne knjižnice (opcijsko)
Zakaj NuGet paket?
| Brez NuGet | Z NuGet |
| ———— | ——— |
| Ročno kopiranje DLL-jev | dotnet add package … |
| Ročno upravljanje različic | Samodejne posodobitve |
| Vsak projekt posamezno | Centralni repozitorij |
Struktura paketa za nativne knjižnice
NuGet podpira nativne DLL-je preko runtimes/:
MojPaket.1.0.0.nupkg/ ├── lib/ │ └── net8.0/ │ └── MojPaket.dll # .NET ovoj ├── runtimes/ │ ├── win-x64/ │ │ └── native/ │ │ ├── libcrypto-3-x64.dll │ │ └── libssl-3-x64.dll │ └── linux-x64/ │ └── native/ │ ├── libcrypto.so.3 │ └── libssl.so.3 └── MojPaket.nuspec
Preprost primer .nuspec
Ustvarite datoteko OpenSsl.Native.nuspec:
<?xml version="1.0"?> <package> <metadata> <id>OpenSsl.Native</id> <version>3.6.0</version> <authors>Vaše ime</authors> <description>OpenSSL 3.6.0 Native Libraries s podporo za Post-Quantum</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>
Ustvarjanje paketa
1. Priprava datotek
# Ustvarjanje strukture imenikov mkdir nuget-package mkdir nuget-package\win-x64 mkdir nuget-package\linux-x64 # Kopiranje DLL-jev 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\ # Ustvarjanje .nuspec (glejte zgoraj)
2. Gradnja paketa
cd nuget-package # Namestitev NuGet CLI (če ni na voljo) winget install Microsoft.NuGet # Ustvarjanje paketa nuget pack OpenSsl.Native.nuspec # Rezultat: OpenSsl.Native.3.6.0.nupkg
Lokalni NuGet feed
Za interno uporabo lahko nastavite lokalni NuGet feed:
1. Ustvarjanje mape za feed
mkdir C:\NuGetFeed
copy OpenSsl.Native.3.6.0.nupkg C:\NuGetFeed\
2. Registracija feeda v NuGet.config
Ustvarite NuGet.config v mapi projekta:
<?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. Uporaba paketa
dotnet add package OpenSsl.Native --version 3.6.0 --source C:\NuGetFeed
Z .NET SDK Pack
Alternativno lahko pakirate neposredno iz .csproj:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <PackageId>OpenSsl.Native</PackageId> <Version>3.6.0</Version> <Authors>Vaše ime</Authors> <Description>OpenSSL 3.6.0 Native Libraries</Description> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup> <ItemGroup> <None Include="runtimes\**\*" Pack="true" PackagePath="runtimes\" /> </ItemGroup> </Project>
Nato:
dotnet pack -c Release
Nastavitev omrežnega feeda
Za ekipe: feed na omrežnem disku
Strežniška stran
# Ustvarjanje skupne rabe (kot administrator) New-SmbShare -Name "NuGetFeed" -Path "D:\NuGetFeed" -ReadAccess "Everyone"
Odjemalska stran
<!-- NuGet.config --> <configuration> <packageSources> <add key="InternalFeed" value="\\server\NuGetFeed" /> </packageSources> </configuration>
Nasveti
Verzioniranje:
- Semantično verzioniranje:
MAJOR.MINOR.PATCH - OpenSSL 3.6.0 → Paket 3.6.0
- Lastni popravki → 3.6.0.1, 3.6.0.2
Brez skrivnosti v paketih!
- Brez API ključev
- Brez zasebnih ključev
- Brez gesel v konfiguracijah
Naprej na
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: dne 15.12.2025 ob 21:22