====== 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'':
OpenSsl.Native
3.6.0
Vaše ime
OpenSSL 3.6.0 Native Libraries s podporo za Post-Quantum
openssl cryptography post-quantum ml-dsa ml-kem
----
===== 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:
==== 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:
net8.0
OpenSsl.Native
3.6.0
Vaše ime
OpenSSL 3.6.0 Native Libraries
true
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 ====
----
===== 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 =====
* [[wvds:sl:openssl:verteilung:nuget-paket|Objava NuGet paketa]]
* [[wvds:sl:openssl:verteilung:start|6. Distribucija]]
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//