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.

Vedi anche