====== 5.2 Fondamenti NuGet ====== Questa pagina spiega cos'è NuGet e come creare pacchetti per librerie native. ---- ===== Cos'è NuGet? ===== **NuGet** è il gestore di pacchetti per .NET - paragonabile a: * npm per JavaScript * pip per Python * Maven per Java Un pacchetto NuGet (''.nupkg'') contiene: * DLL compilate * Metadati (nome, versione, autore) * Librerie native (opzionale) ---- ===== Perché un Pacchetto NuGet? ===== | Senza NuGet | Con NuGet | |-------------|-----------| | Copiare DLL manualmente | ''dotnet add package ...'' | | Gestire versioni a mano | Aggiornamenti automatici | | Ogni progetto singolarmente | Repository centralizzato | ---- ===== Struttura Pacchetto per Librerie Native ===== NuGet supporta DLL native tramite ''runtimes/'': MioPacchetto.1.0.0.nupkg/ ├── lib/ │ └── net8.0/ │ └── MioPacchetto.dll # Wrapper .NET ├── runtimes/ │ ├── win-x64/ │ │ └── native/ │ │ ├── libcrypto-3-x64.dll │ │ └── libssl-3-x64.dll │ └── linux-x64/ │ └── native/ │ ├── libcrypto.so.3 │ └── libssl.so.3 └── MioPacchetto.nuspec ---- ===== Esempio .nuspec Semplice ===== Create un file ''OpenSsl.Native.nuspec'': OpenSsl.Native 3.6.0 Il vostro nome Librerie native OpenSSL 3.6.0 con supporto Post-Quantum openssl cryptography post-quantum ml-dsa ml-kem ---- ===== Creare il Pacchetto ===== ==== 1. Preparare i File ==== # Creare struttura directory mkdir nuget-package mkdir nuget-package\win-x64 mkdir nuget-package\linux-x64 # Copiare le DLL 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\ # Creare .nuspec (vedi sopra) ==== 2. Compilare il Pacchetto ==== cd nuget-package # Installare NuGet CLI (se non presente) winget install Microsoft.NuGet # Creare il pacchetto nuget pack OpenSsl.Native.nuspec # Risultato: OpenSsl.Native.3.6.0.nupkg ---- ===== Feed NuGet Locale ===== Per uso interno potete configurare un feed NuGet locale: ==== 1. Creare Cartella Feed ==== mkdir C:\NuGetFeed copy OpenSsl.Native.3.6.0.nupkg C:\NuGetFeed\ ==== 2. Registrare Feed in NuGet.config ==== Create ''NuGet.config'' nella cartella del progetto: ==== 3. Usare il Pacchetto ==== dotnet add package OpenSsl.Native --version 3.6.0 --source C:\NuGetFeed ---- ===== Con .NET SDK Pack ===== In alternativa potete creare il pacchetto direttamente dal .csproj: net8.0 OpenSsl.Native 3.6.0 Il vostro nome Librerie native OpenSSL 3.6.0 true Poi: dotnet pack -c Release ---- ===== Configurare Feed di Rete ===== Per i team: Feed su unità di rete ==== Lato Server ==== # Creare condivisione (come Admin) New-SmbShare -Name "NuGetFeed" -Path "D:\NuGetFeed" -ReadAccess "Everyone" ==== Lato Client ==== ---- ===== Suggerimenti ===== **Versionamento:** * Semantic Versioning: ''MAJOR.MINOR.PATCH'' * OpenSSL 3.6.0 → Pacchetto 3.6.0 * Fix propri → 3.6.0.1, 3.6.0.2 **Niente segreti nei pacchetti!** * Niente chiavi API * Niente chiavi private * Niente password nelle configurazioni ---- ===== Continua con ===== * [[.:verteilung:nuget-paket|Pubblicare pacchetto NuGet]] * [[.:verteilung:start|6. Distribuzione]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//