Creare un pacchetto usando l'interfaccia della riga di comando di nuget.exe
Indipendentemente dalle operazioni eseguite dal pacchetto o dal tipo di codice contenuto, è possibile usare uno degli strumenti dell'interfaccia della riga di comando, ovvero nuget.exe
o dotnet.exe
. per rendere disponibili tali funzionalità in un componente condivisibile e utilizzabile da altri sviluppatori. Per installare gli strumenti dell'interfaccia della riga di comando di NuGet, vedere Installare gli strumenti client di NuGet. Si noti che Visual Studio non include automaticamente uno strumento dell'interfaccia della riga di comando.
Per i progetti non di tipo SDK, in genere progetti .NET Framework, seguire la procedura descritta in questo articolo per creare un pacchetto. Per istruzioni dettagliate sull'uso di Visual Studio e dell'interfaccia della riga di comando di
nuget.exe
, vedere Creare e pubblicare un pacchetto .NET Framework.Per i progetti .NET Core e .NET Standard che usano il formato di tipo SDK, e qualsiasi altro progetto di tipo SDK, vedere Creare un pacchetto NuGet con l'interfaccia della riga di comando di dotnet.
Per i progetti migrati da
packages.config
a PackageReference, usare msbuild -t:pack.
Da un punto di vista tecnico, un pacchetto NuGet è solo un file ZIP rinominato con l'estensione .nupkg
e i cui contenuti rispettano determinate convenzioni. Questo argomento descrive il processo dettagliato di creazione di un pacchetto che soddisfa tali convenzioni.
La creazione di un pacchetto inizia con il codice compilato (assembly), i simboli e/o altri file che si vuole distribuire come pacchetto. Vedere Panoramica e flusso di lavoro. Questo processo è indipendente dalla compilazione o comunque dalla generazione dei file inseriti nel pacchetto, anche se è possibile usare le informazioni contenute in un file di progetto per mantenere sincronizzati i pacchetti e gli assembly compilati.
Importante
Questo argomento si applica ai progetti non in stile SDK, in genere progetti diversi dai progetti .NET Core e .NET Standard che usano Visual Studio 2017 e versioni successive e NuGet 4.0+.
Scegliere gli assembly per cui creare un pacchetto
La maggior parte dei pacchetti per utilizzo generico contiene uno o più assembly che gli altri sviluppatori possono usare nei propri progetti.
In generale, l'ideale è avere un assembly per ogni pacchetto NuGet, purché ogni assembly abbia una propria utilità. Se ad esempio è presente un file
Utilities.dll
che dipende daParser.dll
eParser.dll
è utile di per sé, creare un pacchetto per ognuno. In questo modo gli sviluppatori possono usareParser.dll
indipendentemente daUtilities.dll
.Se la libreria è costituita da più assembly che non hanno una propria utilità, è consigliabile combinarli in un solo pacchetto. Usando l'esempio precedente, se
Parser.dll
contiene codice che viene usato solo daUtilities.dll
, è consigliabile tenereParser.dll
nello stesso pacchetto.Analogamente, se
Utilities.dll
dipende daUtilities.resources.dll
e quest'ultimo non è utile di per sé, inserirli entrambi nello stesso pacchetto.
Le risorse sono di fatto un caso particolare. Quando un pacchetto viene installato in un progetto, NuGet aggiunge automaticamente alle DLL del pacchetto i riferimenti agli assembly, escludendo quelli denominati .resources.dll
perché si presuppone che siano assembly satellite localizzati. Vedere Creazione di pacchetti localizzati. Per questo motivo, evitare di usare .resources.dll
per i file che contengono invece codice essenziale per il pacchetto.
Se la libreria contiene assembly di interoperabilità COM, seguire le linee guida aggiuntive in Creare pacchetti con assembly di interoperabilità COM.
Ruolo e struttura del file con estensione nuspec
Dopo avere deciso per quali file si vuole creare un pacchetto, il passaggio successivo prevede la creazione di un manifesto del pacchetto in un file XML .nuspec
.
Il manifesto:
- Descrive i contenuti del pacchetto e viene incluso nel pacchetto.
- Gestisce la creazione del pacchetto e indica a NuGet come installare il pacchetto in un progetto. Il manifesto, ad esempio, identifica le altre dipendenze del pacchetto in modo che NuGet possa installare anche tali dipendenze quando viene installato il pacchetto principale.
- Contiene le proprietà sia obbligatorie che facoltative, come descritto di seguito. Per informazioni dettagliate, incluse le altre proprietà non citate qui, vedere Informazioni di riferimento sul file .nuspec.
Proprietà obbligatorie:
- Identificatore del pacchetto, che deve essere univoco nella raccolta che ospita il pacchetto.
- Numero di versione specifico nel formato Major.Minor.Patch[-Suffix] dove -Suffix identifica le versioni preliminari
- Titolo del pacchetto come deve essere visualizzato nell'host (ad esempio, nuget.org)
- Informazioni sull'autore e sul proprietario.
- Descrizione estesa del pacchetto.
Proprietà facoltative comuni:
- Note sulla versione
- Informazioni sul copyright
- Breve descrizione dell'interfaccia utente di Gestione pacchetti in Visual Studio
- ID impostazioni locali
- URL progetto
- Licenza come espressione o file (
licenseUrl
è deprecato, usare invece l'elementolicense
di metadati nuspec) - Un file icona (
iconUrl
è deprecato usareicon
invece l'elemento di metadati nuspec) - Elenchi di dipendenze e riferimenti
- Tag di supporto per le ricerche nella raccolta
Di seguito è riportato un file .nuspec
tipico (ma fittizio), con commenti che descrivono le proprietà:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Identifier that must be unique within the hosting gallery -->
<id>Contoso.Utility.UsefulStuff</id>
<!-- Package version number that is used when resolving dependencies -->
<version>1.8.3</version>
<!-- Authors contain text that appears directly on the gallery -->
<authors>Dejana Tesic, Rajeev Dey</authors>
<!--
Owners are typically nuget.org identities that allow gallery
users to easily find other packages by the same owners.
-->
<owners>dejanatc, rjdey</owners>
<!-- Project URL provides a link for the gallery -->
<projectUrl>http://github.com/contoso/UsefulStuff</projectUrl>
<!-- License information is displayed on the gallery -->
<license type="expression">Apache-2.0</license>
<!-- Icon is used in Visual Studio's package manager UI -->
<icon>icon.png</icon>
<!--
If true, this value prompts the user to accept the license when
installing the package.
-->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<!-- Any details about this particular release -->
<releaseNotes>Bug fixes and performance improvements</releaseNotes>
<!--
The description can be used in package manager UI. Note that the
nuget.org gallery uses information you add in the portal.
-->
<description>Core utility functions for web applications</description>
<!-- Copyright information -->
<copyright>Copyright ©2016 Contoso Corporation</copyright>
<!-- Tags appear in the gallery and can be used for tag searches -->
<tags>web utility http json url parsing</tags>
<!-- Dependencies are automatically installed when the package is installed -->
<dependencies>
<dependency id="Newtonsoft.Json" version="9.0" />
</dependencies>
</metadata>
<!-- A readme.txt to display when the package is installed -->
<files>
<file src="readme.txt" target="" />
<file src="icon.png" target="" />
</files>
</package>
Per informazioni dettagliate sulla dichiarazione delle dipendenze e sulla specifica dei numeri di versione, vedere packages.config e Controllo delle versioni dei pacchetti. È anche possibile esporre gli asset dalle dipendenze direttamente nel pacchetto usando gli attributi include
ed exclude
nell'elemento dependency
. Vedere la sezione Dipendenze delle informazioni di riferimento sul file .nuspec.
Poiché il manifesto è incluso nel pacchetto creato, per trovare altri esempi, esaminare i pacchetti esistenti. Una valida fonte è la cartella global-packages nel computer, la posizione della quale viene restituita dal comando seguente:
nuget locals -list global-packages
Andare a qualsiasi cartella pacchetto\versione, copiare il file .nupkg
in un file .zip
, quindi aprire il file .zip
ed esaminare il file .nuspec
.
Nota
Quando si crea un file .nuspec
da un progetto di Visual Studio, il manifesto contiene token che vengono sostituiti con le informazioni provenienti dal progetto quando il pacchetto viene compilato. Vedere Creazione del file con estensione nuspec da un progetto di Visual Studio.
Creare il file con estensione nuspec
La creazione di un manifesto completo inizia in genere con un file .nuspec
di base generato con uno dei metodi seguenti:
- Directory di lavoro basata sulle convenzioni
- DLL dell'assembly
- Progetto di Visual Studio
- Nuovo file con valori predefiniti
Si modifica quindi il file manualmente in modo che descriva il contenuto esatto che dovrà essere incluso nel pacchetto finale.
Importante
I file .nuspec
generati contengono segnaposto che devono essere modificati prima di creare il pacchetto con il comando nuget pack
, che ha esito negativo se il file .nuspec
contiene segnaposto.
Da una directory di lavoro basata sulle convenzioni
Dato che un pacchetto NuGet è solo un file ZIP rinominato con l'estensione .nupkg
, spesso è più semplice creare la struttura di cartelle necessaria nel file system locale e quindi creare il file .nuspec
direttamente da tale struttura. Il comando nuget pack
aggiunge quindi automaticamente tutti i file in tale struttura di cartelle, escluse le cartelle che iniziano con .
, per poter mantenere i file privati nella stessa struttura.
Il vantaggio di questo approccio è che non è necessario specificare nel manifesto i file che si vuole includere nel pacchetto, come illustrato più avanti in questo argomento. È sufficiente fare in modo che il processo di compilazione generi l'esatta struttura di cartelle da inserire nel pacchetto, per poter facilmente includere altri file che altrimenti potrebbero non fare parte di un progetto:
- Contenuto e codice sorgente da inserire nel progetto di destinazione.
- Script PowerShell
- Trasformazioni della configurazione esistente e dei file del codice sorgente di un progetto.
Le convenzioni delle cartelle sono le seguenti:
Folder | Descrizione | Azione durante l'installazione del pacchetto |
---|---|---|
(radice) | Percorso del file readme.txt | Visual Studio visualizza un file readme.txt nella radice del pacchetto quando il pacchetto viene installato. |
lib/{tfm} | File di assembly (.dll ), di documentazione (.xml ) e di simboli (.pdb ) per il moniker del framework di destinazione (TFM, Target Framework Moniker) specificato |
Gli assembly vengono aggiunti come riferimenti per la compilazione, oltre che per il runtime. .xml e .pdb vengono copiati nelle cartelle di progetto. Per la creazione di sottocartelle specifiche del framework di destinazione, vedere Supporto di più framework di destinazione. |
ref/{tfm} | File di assembly (.dll ) e di simboli (.pdb ) per il moniker del framework di destinazione (TFM, Target Framework Moniker) specificato |
Gli assembly vengono aggiunti come riferimenti solo per la fase di compilazione. Non verrà quindi copiato nulla nella cartella bin del progetto. |
runtimes | File di assembly (.dll ), di simboli (.pdb ) e di risorse native (.pri ) specifici dell'architettura |
Gli assembly vengono aggiunti come riferimenti solo per il runtime. Gli altri file vengono copiati nelle cartelle di progetto. Deve esistere sempre un assembly specifico AnyCPU corrispondente (TFM) sotto la cartella /ref/{tfm} per fornire l'assembly della fase di compilazione corrispondente. Vedere Supporto di più framework di destinazione. |
content | File arbitrari | I contenuti vengono copiati nella radice del progetto. La cartella content può essere considerata come la radice dell'applicazione di destinazione che in definitiva utilizza il pacchetto. Per fare in modo che il pacchetto aggiunga un'immagine nella cartella /images dell'applicazione, inserirla nella cartella content/images del pacchetto. |
build | (3.x+) File .targets e .props di MSBuild |
Vengono automaticamente inseriti nel progetto. |
buildMultiTargeting | (4.0+) File .targets e .props di MSBuild per l'assegnazione di più framework di destinazione |
Vengono automaticamente inseriti nel progetto. |
buildTransitive | (5.0 +) File .targets e .props di MSBuild che si propagano in modo transitivo a qualsiasi progetto che gli utilizza. Vedere la pagina delle funzionalità. |
Vengono automaticamente inseriti nel progetto. |
tools | Script di PowerShell e programmi accessibili dalla console di Gestione pacchetti | La cartella tools viene aggiunta alla variabile di ambiente PATH solo per la console di Gestione pacchetti, in particolare non alla variabile PATH impostata per MSBuild durante la compilazione del progetto. |
Poiché la struttura di cartelle può contenere un numero indeterminato di assembly per un numero indeterminato di framework di destinazione, questo metodo è necessario quando si creano pacchetti che supportano più framework.
In ogni caso, dopo avere creato la struttura di cartelle desiderata, eseguire il comando seguente in tale cartella per creare il file .nuspec
:
nuget spec
Anche in questo caso, il file .nuspec
generato non contiene riferimenti espliciti ai file nella struttura di cartelle. NuGet include tutti i file automaticamente quando viene creato il pacchetto. È tuttavia necessario modificare i valori dei segnaposto nelle altre parti del manifesto.
Da una DLL dell'assembly
Nel semplice caso della creazione di un pacchetto da un assembly, è possibile generare un file .nuspec
dai metadati nell'assembly usando il comando seguente:
nuget spec <assembly-name>.dll
Usando questo formato, alcuni segnaposto nel manifesto vengono sostituiti con i valori specifici dell'assembly. La proprietà <id>
, ad esempio, viene impostata sul nome dell'assembly e <version>
viene impostata sulla versione dell'assembly. Le altre proprietà del manifesto non hanno tuttavia valori corrispondenti nell'assembly e perciò contengono ancora i segnaposto.
Da un progetto di Visual Studio
La creazione di un file .nuspec
da un file .csproj
o .vbproj
è utile perché viene fatto automaticamente riferimento agli altri pacchetti che sono stati installati in tale progetto come a dipendenze. È sufficiente usare il comando seguente nella stessa cartella del file di progetto:
# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget spec
Il file <project-name>.nuspec
risultante contiene token che in fase di creazione del pacchetto vengono sostituiti con i valori del progetto, inclusi i riferimenti agli altri pacchetti già installati.
In presenza di dipendenze del pacchetto da includere nel file con estensione nuspec, usare invece nuget pack
e ottenere il file con estensione nuspec dall'interno del file con estensione nupkg generato. Ad esempio, usare il comando seguente.
# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget pack myproject.csproj
Un token è delimitato dai simboli $
su entrambi i lati della proprietà del progetto. Ad esempio, il valore <id>
in un manifesto generato in questo modo solitamente viene visualizzato come segue:
<id>$id$</id>
Questo token viene sostituito con il valore AssemblyName
del file di progetto in fase di creazione del pacchetto. Per il mapping esatto dei valori del progetto ai token di .nuspec
, vedere le informazioni di riferimento in Token di sostituzione.
I token evitano di dover aggiornare i valori fondamentali, ad esempio il numero di versione, nel file .nuspec
quando si aggiorna il progetto. È sempre possibile sostituire i token con valori letterali, se necessario.
Tenere presente che sono disponibili diverse altre opzioni di creazione del pacchetto quando si usa un progetto di Visual Studio, come illustrato più avanti in Esecuzione di nuget pack per generare il file con estensione nupkg.
Pacchetti a livello di soluzione
Solo NuGet 2.x. Non disponibile in NuGet 3.0+.
NuGet 2.x supportava la nozione di pacchetto a livello di soluzione che installa strumenti o comandi aggiuntivi per la console di Gestione pacchetti (contenuti della cartella tools
), ma non aggiunge riferimenti, contenuto o personalizzazioni delle compilazioni ai progetti della soluzione. Tali pacchetti non contengono file nelle cartelle lib
, content
o build
dirette e nessuna dipendenza ha file nelle rispettive cartelle lib
, content
o build
.
NuGet tiene traccia dei pacchetti a livello di soluzione installati in un file packages.config
nella cartella .nuget
, invece che nel file packages.config
del progetto.
Nuovo file con valori predefiniti
Il comando seguente crea un manifesto predefinito con segnaposto, che assicura di iniziare con la struttura di file corretta:
nuget spec [<package-name>]
Se si omette <package-name>, il file risultante è Package.nuspec
. Se come nome si specifica ad esempio Contoso.Utility.UsefulStuff
, il file è Contoso.Utility.UsefulStuff.nuspec
.
Il file .nuspec
risultante contiene segnaposto per i valori come projectUrl
. Assicurarsi di modificare il file prima di usarlo per creare il file .nupkg
finale.
Scegliere un identificatore univoco del pacchetto e impostare il numero di versione
L'identificatore del pacchetto (elemento <id>
) e il numero di versione (elemento <version>
) sono i due valori più importanti del manifesto perché identificano in modo univoco il codice esatto contenuto nel pacchetto.
Procedure consigliate per l'identificatore del pacchetto:
- Univocità: l'identificatore deve essere univoco in nuget.org o in qualsiasi raccolta che ospita il pacchetto. Prima di scegliere un identificatore, eseguire una ricerca nella raccolta applicabile per controllare se il nome è già in uso. Per evitare conflitti, è consigliabile usare il nome della società come prima parte dell'identificatore, ad esempio
Contoso.
. - Nomi simili a spazi dei nomi: seguono un modello simile a quello degli spazi dei nomi in .NET, usando la notazione del punto invece dei trattini. Usare, ad esempio,
Contoso.Utility.UsefulStuff
invece diContoso-Utility-UsefulStuff
oContoso_Utility_UsefulStuff
. Per gli utenti è anche utile che l'identificatore del pacchetto corrisponda agli spazi dei nomi usati nel codice. - Pacchetti di esempio: se si produce un pacchetto di codice di esempio che illustra come usare un altro pacchetto, collegare
.Sample
come suffisso all'identificatore, come inContoso.Utility.UsefulStuff.Sample
. Il pacchetto di esempio avrà naturalmente una dipendenza dall'altro pacchetto. Quando si crea un pacchetto di esempio, usare il metodo della directory di lavoro basato su convenzioni descritto in precedenza. Nella cartellacontent
inserire il codice di esempio in una cartella denominata\Samples\<identifier>
come in\Samples\Contoso.Utility.UsefulStuff.Sample
.
Procedure consigliate per la versione del pacchetto:
- In generale, impostare la versione del pacchetto in modo che corrisponda alla libreria, anche se non è strettamente necessario. È davvero semplicissimo quando si limita un pacchetto a un singolo assembly, come descritto precedentemente in Scelta degli assembly per cui creare un pacchetto. In generale, tenere presente che, durante la risoluzione delle dipendenze, di per sé NuGet gestisce le versioni dei pacchetti, non le versioni degli assembly.
- Quando si usa uno schema della versione non standard, tenere in considerazione le regole di controllo delle versioni di NuGet, come illustrato in Controllo delle versioni dei pacchetti.
Per informazioni sul controllo delle versioni, vedere anche la serie seguente di brevi post di blog:
- Part 1: Taking on DLL Hell (Parte 1: Affrontare l'inferno delle DLL)
- Part 2: The core algorithm (Parte 2: L'algoritmo principale)
- Part 3: Unification via Binding Redirects (Parte 3: Unificazione tramite i reindirizzamenti di binding)
Aggiungere un file leggimi e altri file
Per specificare direttamente i file da includere nel pacchetto, usare il nodo <files>
nel file .nuspec
, che segue il tag <metadata>
:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- ... -->
</metadata>
<files>
<!-- Add a readme -->
<file src="readme.txt" target="" />
<!-- Add files from an arbitrary folder that's not necessarily in the project -->
<file src="..\..\SomeRoot\**\*.*" target="" />
</files>
</package>
Suggerimento
Quando si usa l'approccio della directory di lavoro basata sulle convenzioni, è possibile inserire il file readme.txt nella radice del pacchetto e gli altri contenuti nella cartella content
. Non sono necessari elementi <file>
nel manifesto.
Quando si include un file denominato readme.txt
nella radice del pacchetto, Visual Studio visualizza i contenuti del file come testo normale subito dopo avere installato direttamente il pacchetto. I file leggimi non vengono visualizzati per i pacchetti installati come dipendenze. Ecco ad esempio come viene visualizzato il file leggimi per il pacchetto HtmlAgilityPack:
Nota
Se si include un nodo <files>
vuoto nel file .nuspec
, NuGet non include nel pacchetto altri contenuti diversi dal contenuto della cartella lib
.
Includere proprietà e destinazioni MSBuild in un pacchetto
In alcuni casi, potrebbe essere necessario aggiungere destinazioni o proprietà di compilazione personalizzata nei progetti che utilizzano il pacchetto, ad esempio l'esecuzione di uno strumento o processo personalizzato durante la compilazione. Altre informazioni sulle proprietà e sulle destinazioni di MSBuild nei pacchetti NuGet
Creare <package_id>.targets
o <package_id>.props
,ad esempio Contoso.Utility.UsefulStuff.targets
, all'interno delle cartelle di compilazione del progetto.
Nel file .nuspec
assicurarsi quindi di fare riferimento a questi file nel nodo <files>
:
<?xml version="1.0"?>
<package >
<metadata minClientVersion="2.5">
<!-- ... -->
</metadata>
<files>
<!-- Include everything in \build -->
<file src="build\**" target="build" />
<!-- Other files -->
<!-- ... -->
</files>
</package>
Quando i pacchetti vengono aggiunti a un progetto, NuGet includerà automaticamente queste proprietà e destinazioni.
Eseguire nuget pack per generare il file con estensione nupkg
Quando si usa un assembly o la directory di lavoro basata sulle convenzioni, creare un pacchetto eseguendo nuget pack
con il file .nuspec
, sostituendo <project-name>
con il nome file specifico:
nuget pack <project-name>.nuspec
Quando si usa un progetto di Visual Studio, eseguire nuget pack
con il file di progetto, che carica automaticamente il file .nuspec
del progetto e sostituisce il token usando i valori del file di progetto:
nuget pack <project-name>.csproj
Nota
L'uso diretto del file di progetto è necessario per la sostituzione dei token perché il progetto è l'origine dei valori dei token. La sostituzione dei token non avviene se si usa nuget pack
con un file .nuspec
.
In tutti i casi, nuget pack
esclude le cartelle che iniziano con un punto, ad esempio .git
o .hg
.
NuGet indica se sono presenti errori nel file .nuspec
che richiedono una correzione, ad esempio se si dimentica di modificare i valori dei segnaposto nel manifesto.
Dopo la corretta esecuzione di nuget pack
, è disponibile un file .nupkg
che è possibile pubblicare in una raccolta appropriata, come illustrato in Pubblicazione di un pacchetto.
Suggerimento
Per esaminare un pacchetto dopo averlo creato, è possibile aprirlo nello strumento Package Explorer, che offre una visualizzazione grafica dei contenuti del pacchetto e del manifesto. È anche possibile rinominare il file .nupkg
risultante in un file .zip
ed esplorarne il contenuto direttamente.
Opzioni aggiuntive
Tra le altre funzionalità, è possibile usare diverse opzioni della riga di comando con nuget pack
per escludere i file, eseguire l'override del numero di versione nel manifesto e modificare la cartella di output. Per un elenco completo, vedere le informazioni di riferimento sul comando pack.
Le seguenti sono alcune opzioni comuni ai progetti di Visual Studio:
Progetti di riferimento: se il progetto fa riferimento ad altri progetti, è possibile aggiungere i progetti a cui si fa riferimento come parte del pacchetto o come dipendenze, usando l'opzione
-IncludeReferencedProjects
:nuget pack MyProject.csproj -IncludeReferencedProjects
Questo processo di inclusione è ricorsivo, quindi se
MyProject.csproj
fa riferimento ai progetti B e C e tali progetti fanno riferimento a D, E e F, i file di B, C, D, E e F vengono inclusi nel pacchetto.Se un progetto a cui si fa riferimento include un proprio file
.nuspec
, NuGet aggiunge invece tale progetto a cui si fa riferimento come dipendenza. È necessario creare un pacchetto per il progetto e pubblicarlo separatamente.Configurazione della build: per impostazione predefinita, NuGet usa la configurazione della build predefinita impostata nel file di progetto, in genere Debug. Per creare un pacchetto per i file da una configurazione della build differente, ad esempio Release, usare l'opzione
-properties
con la configurazione:nuget pack MyProject.csproj -properties Configuration=Release
Simboli: per includere i simboli che consentono agli utenti di eseguire il codice del pacchetto un'istruzione alla volta nel debugger, usare l'opzione
-Symbols
:nuget pack MyProject.csproj -symbols
Testare l'installazione del pacchetto
Prima di pubblicare un pacchetto, in genere si preferisce testarne il processo di installazione in un progetto. I test assicurano che i file necessari vengano inseriti nei percorsi corretti all'interno del progetto.
È possibile testare manualmente le installazioni in Visual Studio o dalla riga di comando seguendo i normali passaggi di installazione del pacchetto.
Per i test automatizzati, il processo di base è il seguente:
- Copiare il file
.nupkg
in una cartella locale. - Aggiungere la cartella alle origini del pacchetto usando il comando
nuget sources add -name <name> -source <path>
. Vedere nuget sources. Si noti che è necessario impostare l'origine locale solo una volta in ogni computer. - Installare il pacchetto da tale origine usando
nuget install <packageID> -source <name>
dove<name>
corrisponde al nome dell'origine specificata innuget sources
. Specificando l'origine, il pacchetto viene con certezza installato solo da tale origine. - Esaminare il file system per controllare che i file siano installati correttamente.
Passaggi successivi
Dopo aver creato un pacchetto, ovvero un file .nupkg
, è possibile pubblicarlo nella raccolta di propria scelta, come descritto in Pubblicazione di un pacchetto.
Potrebbe anche essere necessario estendere le funzionalità del pacchetto o supportare altri scenari, come descritto negli argomenti seguenti:
- Controllo delle versioni dei pacchetti
- Supporto di più framework di destinazione
- Trasformazioni di file di origine e di configurazione
- Localizzazione
- Versioni non definitive
- Impostare il tipo di pacchetto
- Creare pacchetti con assembly di interoperabilità COM
Sono infine disponibili altri tipi di pacchetti da tenere presenti: