Guida introduttiva: Creare e pubblicare un pacchetto con Visual Studio (.NET Framework, Windows)

Con Microsoft Visual Studio è possibile creare un pacchetto NuGet da una libreria di classi .NET Framework e quindi pubblicarlo in nuget.org usando lo strumento dell'interfaccia della riga di comando di NuGet.

La guida introduttiva è solo per gli utenti di Windows. Se si usa Visual Studio per Mac, vedere invece gli strumenti dell'interfaccia della riga di comando dotnet.

Prerequisiti

  • Installare Visual Studio 2022 per Windows con qualsiasi . Carico di lavoro correlato a NET.

    È possibile installare gratuitamente l'edizione Community 2022 da visualstudio.microsoft.com oppure usare l'edizione Professional o Enterprise.

    Visual Studio 2017 e versioni successive includono automaticamente funzionalità NuGet quando viene installato un carico di lavoro .NET.

  • Registrarsi per ottenere un account gratuito in nuget.org se non è già disponibile. È necessario registrare e confermare l'account prima di poter caricare un pacchetto NuGet.

  • Installare l'interfaccia della riga di comando di NuGet scaricandola da nuget.org. Aggiungere il file nuget.exe a una cartella appropriata e aggiungere tale cartella alla variabile di ambiente PATH.

Creare un progetto di libreria di classi

Per creare un progetto di libreria di classi, seguire questa procedura:

  1. In Visual Studio selezionare File>Nuovo>Progetto.

  2. Nella finestra Crea un nuovo progetto selezionare C#, Windows e Libreria negli elenchi a discesa.

  3. Nell'elenco risultante dei modelli di progetto selezionare Libreria di classi (.NET Framework) e quindi selezionare Avanti.

  4. Nella finestra Configura il nuovo progetto immettere AppLogger come Nome progetto e quindi selezionare Crea.

  5. Per assicurarsi che il progetto sia stato creato correttamente, selezionare Compila>soluzione di compilazione. La DLL è presente nella cartella Debug (o Release se si crea invece tale configurazione).

  6. (Facoltativo) Per questa guida introduttiva non è necessario scrivere codice aggiuntivo per il pacchetto NuGet perché la libreria di classi modello è sufficiente per creare un pacchetto. Tuttavia, se si vuole un codice funzionale per questo pacchetto di esempio, includere il codice seguente:

    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    

    All'interno di un pacchetto NuGet reale, è probabile che si implementino molte funzionalità utili con cui altri utenti possono compilare applicazioni. È anche possibile impostare i framework di destinazione. Per esempi, vedi UWP e Xamarin.

Configurare le proprietà del progetto per il pacchetto

Un pacchetto NuGet include un manifesto (un .nuspec file), che contiene metadati pertinenti, ad esempio l'identificatore del pacchetto, il numero di versione, la descrizione e altro ancora. Alcuni di questi metadati possono essere disegnati direttamente dalle proprietà del progetto, evitando di doverle aggiornare separatamente sia nel progetto che nel manifesto. I passaggi seguenti descrivono come impostare le proprietà applicabili:

  1. Selezionare Proprietà progetto > e quindi selezionare la scheda Applicazione.

  2. Per Nome assembly assegnare al pacchetto un identificatore univoco. Se si tenta di pubblicare un pacchetto con un nome già esistente, viene visualizzato un errore.

    Importante

    È necessario assegnare al pacchetto un identificatore univoco in nuget.org o per qualsiasi host in uso. In caso contrario si verifica un errore. Per questa guida introduttiva è consigliabile includere Sample o Test nel nome perché il passaggio di pubblicazione rende il pacchetto visibile pubblicamente.

  3. Selezionare Informazioni assembly, che visualizza una finestra di dialogo in cui è possibile immettere altre proprietà che contengono nel manifesto (vedere Token di sostituzione). I campi più comunemente usati sono Titolo, Descrizione, Azienda, Copyright e Versione assembly. Poiché queste proprietà vengono visualizzate con il pacchetto in un host come nuget.org dopo la pubblicazione, assicurarsi che siano completamente descrittive.

    Screenshot showing the Assembly Information page in a .NET Framework project in Visual Studio.

  4. (Facoltativo) Per visualizzare e modificare direttamente le proprietà, aprire il file Proprietà/AssemblyInfo.cs nel progetto selezionando> Modifica file di progetto.

  5. Dopo aver impostato queste proprietà, impostare la configurazione della soluzione attiva in Build>Configuration Manager su Release e ricompilare il progetto per generare la DLL aggiornata.

Generare il manifesto iniziale

Dopo aver impostato le proprietà del progetto e aver creato la DLL, è ora possibile generare un file con estensione nuspec iniziale dal progetto. Questo passaggio include i token di sostituzione rilevanti per recuperare le informazioni dal file di progetto.

Eseguire nuget spec una sola volta per generare il manifesto iniziale. Se si aggiorna il pacchetto, modificare i valori nel progetto o modificare direttamente il manifesto:

  1. Con il progetto aperto in Esplora soluzioni, aprire un prompt dei comandi selezionando Strumenti>>prompt dei comandi per gli sviluppatori.

    Il prompt dei comandi viene aperto nella directory del progetto in cui si trova il AppLogger.csproj file.

  2. Eseguire questo comando: nuget spec AppLogger.csproj.

    NuGet crea un manifesto che corrisponde al nome del progetto, in questo caso AppLogger.nuspec. Include anche token di sostituzione nel manifesto.

  3. Aprire AppLogger.nuspec in un editor di testo per esaminarne il contenuto, che sarà simile al codice seguente:

    <?xml version="1.0"?>
    <package >
      <metadata>
        <id>Package</id>
        <version>1.0.0</version>
        <authors>Your username</authors>
        <owners>Your username</owners>
        <license type="expression">MIT</license>
        <!-- <icon>icon.png</icon> -->
        <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Package description</description>
        <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
        <copyright>Copyright 2022</copyright>
        <tags>Tag1 Tag2</tags>
      </metadata>
    </package>
    

Modificare il manifesto

  1. Modificare le proprietà seguenti prima di procedere. In caso contrario, se si tenta di creare un pacchetto NuGet con i valori predefiniti nel .nuspec file, si verifica un errore. Per informazioni su queste proprietà, vedere Elementi di metadati facoltativi:

    • licenseUrl
    • projectUrl
    • releaseNotes
    • tag
  2. Per i pacchetti compilati per uso pubblico, prestare particolare attenzione alla proprietà Tags, perché i tag consentono ad altri utenti di trovare il pacchetto e di comprenderne le funzioni.

  3. È anche possibile aggiungere altri elementi al manifesto in questo momento, come descritto in Riferimento al file con estensione nuspec.

  4. Salvare il file prima di procedere.

Eseguire il comando pack

  1. Con il progetto aperto in Esplora soluzioni, aprire un prompt dei comandi selezionando Strumenti>>prompt dei comandi per gli sviluppatori.

    Il prompt dei comandi viene aperto nella directory del progetto.

  2. Eseguire questo comando: nuget pack.

    NuGet genera un file con estensione nupkg sotto forma di identifier.version.nupkg nella cartella corrente.

Pubblicare il pacchetto

Dopo aver creato un file con estensione nupkg , pubblicarlo in nuget.org usando l'interfaccia della riga di comando di NuGet con una chiave API acquisita da nuget.org. Per nuget.org, è necessario usare nuget.exe la versione 4.1.0 o successiva.

Se si vuole testare e convalidare il pacchetto prima di pubblicarlo in una raccolta pubblica, è possibile caricarlo in un ambiente di test come int.nugettest.org anziché nuget.org. Si noti che i pacchetti caricati in int.nugettest.org potrebbero non essere mantenuti.

Nota

  • Nuget.org analizza tutti i pacchetti caricati per individuare virus e rifiuta i pacchetti se rileva virus. Nuget.org analizza periodicamente tutti i pacchetti elencati esistenti.

  • I pacchetti pubblicati in nuget.org sono visibili pubblicamente ad altri sviluppatori, a meno che non vengano elencati. Per ospitare i pacchetti privatamente, vedere Ospitare i propri feed NuGet.

Acquisire la chiave API

  1. Accedi al tuo account nuget.org o crea un account se non ne hai già uno.

  2. Selezionare il nome utente in alto a destra e quindi selezionare Chiavi API.

  3. Selezionare Crea e specificare un nome per la chiave.

  4. In Seleziona ambiti selezionare Push.

  5. In Seleziona modello Glob pacchetti>immettere *.

  6. Seleziona Crea.

  7. Selezionare Copia per copiare la nuova chiave.

    Screenshot that shows the new API key with the Copy link.

Importante

  • Mantenere sempre la chiave API un segreto. La chiave API è simile a una password che consente a chiunque di gestire i pacchetti per conto dell'utente. Eliminare o rigenerare la chiave API se viene accidentalmente visualizzata.
  • Salvare la chiave in una posizione sicura, perché non è possibile copiare di nuovo la chiave in un secondo momento. Se si torna alla pagina della chiave API, è necessario rigenerarla per copiarla. È anche possibile rimuovere la chiave API se non si vuole più eseguire il push dei pacchetti.

L'ambito consente di creare chiavi API separate per scopi diversi. Ogni chiave ha un intervallo di tempo di scadenza ed è possibile definire l'ambito della chiave a pacchetti o modelli GLOB specifici. È anche possibile definire l'ambito di ogni chiave per operazioni specifiche: eseguire il push di nuovi pacchetti e versioni dei pacchetti, eseguire il push solo di nuove versioni del pacchetto o annullare l'elenco.

Tramite la definizione dell'ambito, è possibile creare chiavi API per persone diverse che gestiscono i pacchetti per l'organizzazione in modo che abbiano solo le autorizzazioni necessarie.

Per altre informazioni, vedere Chiavi API con ambito.

Pubblicare con l'interfaccia della riga di comando di NuGet

L'uso dell'interfaccia della riga di comando di NuGet (nuget.exe) è un'alternativa all'uso dell'interfaccia della riga di comando di .NET:

  1. Aprire un prompt dei comandi e passare alla cartella contenente il file con estensione nupkg .

  2. Esegui il comando seguente: Sostituire <il nome file> del pacchetto con il nome file del pacchetto e sostituire <il valore> della chiave API con la chiave API. Il nome file del pacchetto è una concatenazione dell'ID pacchetto e del numero di versione con estensione .nupkg . Ad esempio, AppLogger.1.0.0.nupkg:

    nuget push <package filename> <api key value> -Source https://api.nuget.org/v3/index.json
    

    Il risultato del processo di pubblicazione viene visualizzato come segue:

    Pushing <package filename> to 'https://www.nuget.org/api/v2/package'...
        PUT https://www.nuget.org/api/v2/package/
        Created https://www.nuget.org/api/v2/package/ 6829ms
    Your package was pushed.
    

Per altre informazioni, vedere nuget push.

Errori di pubblicazione

Gli errori dal comando push indicano in genere il problema. Ad esempio, potrebbe essere stato dimenticato di aggiornare il numero di versione nel progetto, quindi si sta provando a pubblicare un pacchetto già esistente.

Vengono visualizzati anche errori se la chiave API non è valida o scaduta o se si tenta di pubblicare un pacchetto usando un identificatore già esistente nell'host. Si supponga, ad esempio, che l'identificatore AppLogger-test esista già in nuget.org. Se si tenta di pubblicare un pacchetto con tale identificatore, il push comando restituisce l'errore seguente:

Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

Se viene visualizzato questo errore, verificare di usare una chiave API valida che non è scaduta. In caso affermativo, l'errore indica che l'identificatore del pacchetto esiste già nell'host. Per correggere l'errore, modificare l'identificatore del pacchetto in modo che sia univoco, ricompilare il progetto, ricreare il file con estensione nupkg e ripetere il push comando.

Gestire il pacchetto pubblicato

Quando il pacchetto viene pubblicato correttamente, si riceve un messaggio di posta elettronica di conferma. Per visualizzare il pacchetto appena pubblicato, in nuget.org selezionare il nome utente in alto a destra e quindi selezionare Gestisci pacchetti.

Nota

L'indicizzazione e la visualizzazione del pacchetto nei risultati della ricerca in cui altri utenti possono trovarli potrebbero richiedere un po' di tempo. Durante tale periodo, il pacchetto viene visualizzato in Pacchetti non elencati e la pagina del pacchetto mostra il messaggio seguente:

Screenshot showing the publishing message that's displayed when you upload a package to nuget.org.

A questo punto è stato pubblicato un pacchetto NuGet per nuget.org che altri sviluppatori possono usare nei progetti.

Se è stato creato un pacchetto che non è utile ,ad esempio questo pacchetto di esempio creato con una libreria di classi vuota, oppure si decide di non voler visualizzare il pacchetto, è possibile annullare l'elenco del pacchetto per nasconderlo dai risultati della ricerca:

  1. Dopo che il pacchetto viene visualizzato in Pacchetti pubblicati nella pagina Gestisci pacchetti, selezionare l'icona a forma di matita accanto all'elenco di pacchetti.

    Screenshot that shows the Edit icon for a package listing on nuget.org.

  2. Nella pagina successiva selezionare Elenco, deselezionare la casella di controllo Elenco nei risultati della ricerca e quindi selezionare Salva.

    Screenshot that shows clearing the List checkbox for a package on nuget.org.

Il pacchetto viene ora visualizzato in Pacchetti non elencati in Gestisci pacchetti e non viene più visualizzato nei risultati della ricerca.

Nota

Per evitare che il pacchetto di test sia attivo in nuget.org, è possibile eseguire il push nel sito di test nuget.org all'indirizzo https://int.nugettest.org. Si noti che i pacchetti caricati in int.nugettest.org potrebbero non essere mantenuti.

Passaggi successivi

Congratulazioni per la creazione di un pacchetto NuGet con Visual Studio .NET Framework. Passare all'articolo successivo per informazioni su come creare un pacchetto NuGet con l'interfaccia della riga di comando di NuGet.

Per altre informazioni sull'offerta di NuGet, vedere gli articoli seguenti: