====== 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//