Come creare un pacchetto NuGet con l'interfaccia della riga di comando di .NET
Nota
Di seguito sono riportati esempi dalla riga di comando che usano Unix. Il comando dotnet pack
funziona allo stesso modo in Windows, come illustrato di seguito.
Le librerie .NET Standard e .NET Core devono essere distribuite come pacchetti NuGet. È infatti in questo modo che tutte le librerie .NET Standard vengono distribuite e utilizzate. La modalità più semplice per eseguire tale distribuzione è l'uso del comando dotnet pack
.
Si supponga di aver scritto una nuova libreria da distribuire tramite NuGet. A questo scopo, è possibile creare un pacchetto NuGet con strumenti multipiattaforma. L'esempio seguente presuppone l'esistenza di una libreria denominata SuperAwesomeLibrary destinata a netstandard1.0
.
In caso di dipendenze transitive, ovvero un progetto che dipende da un altro pacchetto, è necessario assicurarsi di ripristinare i pacchetti per l'intera soluzione con il comando dotnet restore
prima di creare un pacchetto NuGet. In caso contrario, il comando dotnet pack
non funzionerà correttamente.
Non è necessario eseguire dotnet restore
perché viene eseguito in modo implicito da tutti i comandi che richiedono un ripristino, ad esempio dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
e dotnet pack
. Per disabilitare il ripristino implicito, usare l'opzione --no-restore
.
Il comando dotnet restore
è ancora utile in alcuni scenari in cui ha senso eseguire un ripristino esplicito, ad esempio le compilazioni di integrazione continua in Azure DevOps Services o in sistemi di compilazione che richiedono il controllo esplicito quando viene eseguito il ripristino.
Per informazioni su come gestire i feed NuGet, vedere la documentazione di dotnet restore
.
Dopo aver verificato che i pacchetti siano stati ripristinati, è possibile passare alla directory in cui si trova una libreria:
cd src/SuperAwesomeLibrary
Quindi è sufficiente eseguire un singolo comando dalla riga di comando:
dotnet pack
La cartella /bin/Debug avrà un aspetto simile al seguente:
$ ls bin/Debug
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
Verrà generato un pacchetto che può essere sottoposto a debug. Se si vuole creare un pacchetto NuGet con i file binari della versione, è sufficiente aggiungere l'opzione --configuration
(o -c
) e usare release
come argomento.
dotnet pack --configuration release
La cartella /bin includerà una cartella release contenente il pacchetto NuGet con i file binari della versione:
$ ls bin/release
netstandard1.0/
SuperAwesomeLibrary.1.0.0.nupkg
SuperAwesomeLibrary.1.0.0.symbols.nupkg
Sono ora disponibili i file necessari per pubblicare un pacchetto NuGet.
Non confondere dotnet pack
con dotnet publish
È importante notare che il comando dotnet publish
non viene affatto coinvolto. Il comando dotnet publish
viene usato per la distribuzione di applicazioni con tutte le relative dipendenze nello stesso bundle, non per la generazione di un pacchetto NuGet per la distribuzione e l'uso mediante NuGet.