Inhaltsverzeichnis
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:
<?xml version="1.0"?> <package> <metadata> <id>OpenSsl.Native</id> <version>3.6.0</version> <authors>Il vostro nome</authors> <description>Librerie native OpenSSL 3.6.0 con supporto 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>
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:
<?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. 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:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> <PackageId>OpenSsl.Native</PackageId> <Version>3.6.0</Version> <Authors>Il vostro nome</Authors> <Description>Librerie native OpenSSL 3.6.0</Description> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup> <ItemGroup> <None Include="runtimes\**\*" Pack="true" PackagePath="runtimes\" /> </ItemGroup> </Project>
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
<!-- NuGet.config --> <configuration> <packageSources> <add key="InternalFeed" value="\\server\NuGetFeed" /> </packageSources> </configuration>
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
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: il 29/01/2026 alle 21:39