Pubblicare pacchetti NuGet

Dopo aver creato un pacchetto NuGet e avere un file con estensione nupkg , è possibile rendere disponibile il pacchetto ad altri sviluppatori pubblicamente o privatamente. Questo articolo descrive come condividere i pacchetti pubblici a livello globale tramite nuget.org.

È anche possibile rendere disponibili pacchetti privati solo per un team o un'organizzazione ospitandoli in una condivisione file, in un server NuGet privato o in un repository di terze parti, ad esempio myget, ProGet, Nexus Repository o Artifactory. Per altre informazioni, vedere Ospitare feed NuGet personalizzati. Per la pubblicazione con Azure Artifacts, vedere Pubblicare pacchetti in NuGet.org.

Pubblicare in nuget.org

Per pubblicare in nuget.org, accedere a nuget.org con un account Microsoft e usarlo per creare un account nuget.org gratuito. Seguire le istruzioni in Aggiungere un nuovo account singolo.

Screenshot that shows the NuGet sign in link.

Dopo aver creato un account, è possibile pubblicare un pacchetto in nuget.org usando il portale Web nuget.org, l'interfaccia della riga di comando dotnet o l'interfaccia della riga di comando di NuGet versione 4.1.0 o successiva. È anche possibile pubblicare pacchetti tramite Azure Pipelines.

Caricare nel portale Web di nuget.org

Per caricare un pacchetto nel sito Web nuget.org:

  1. Selezionare Carica nel menu in alto in nuget.org, passare al pacchetto nel computer e selezionare Apri.

    Screenshot that shows the Upload dialog on nuget.org

    Se l'ID pacchetto esiste già in nuget.org, viene visualizzato un errore. Modificare l'identificatore del pacchetto nel progetto, ricomprimere e riprovare a eseguire il caricamento.

  2. Se il nome del pacchetto è disponibile, viene aperta la sezione Verifica in modo da poter esaminare i metadati dal manifesto del pacchetto. Se è stato incluso un file leggimi nel pacchetto, selezionare Anteprima per assicurarsi che tutto il contenuto venga eseguito correttamente.

    Per modificare uno dei metadati, modificare il file di progetto o il file con estensione nuspec , ricompilare, ricomprimere e caricare di nuovo.

  3. Quando tutte le informazioni sono pronte, selezionare Invia.

Eseguire il push tramite una riga di comando

Per eseguire il push dei pacchetti in nuget.org con una riga di comando, è possibile usare dotnet.exe o nuget.exe v4.1.0 o versione successiva, che implementano i protocolli NuGet necessari. Per altre informazioni, vedere Protocolli NuGet.

Per usare una delle due righe di comando, è prima necessario ottenere una chiave API da nuget.org.

Creazione di una 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.

Usare l'interfaccia della riga di comando dotnet

Dalla cartella che contiene il file con estensione nupkg eseguire il comando seguente. Specificare il nome file con estensione nupkg e sostituire il valore della chiave con la chiave API.

dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json

L'output mostra i risultati del processo di pubblicazione:

Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
  PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
  Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.

Per altre informazioni, vedere dotnet nuget push.

Nota

Se si vuole 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.

Usare l'interfaccia della riga di comando di NuGet

  1. Al prompt dei comandi eseguire il comando seguente, sostituendo <your_API_key> con la chiave ottenuta da nuget.org:

    nuget setApiKey <your_API_key>
    

    Questo comando archivia la chiave API nella configurazione di NuGet in modo che non sia necessario immettere di nuovo la chiave API nello stesso computer.

    Nota

    Questa chiave API non viene usata per l'autenticazione con feed privati. Per gestire le credenziali per l'autenticazione con queste origini, vedere il comando nuget sources.

  2. Eseguire il push del pacchetto usando il comando seguente:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Pubblicare con Azure Pipelines

È possibile eseguire il push dei pacchetti in nuget.org con Azure Pipelines come parte del processo di integrazione continua/distribuzione continua (CI/CD). Per altre informazioni, vedere Pubblicare pacchetti NuGet con Azure Pipelines.

Pubblicare un pacchetto firmato

Per inviare un pacchetto firmato, è prima necessario registrare il certificato usato per firmare il pacchetto. Se non si soddisfano i requisiti del pacchetto firmati, nuget.org rifiuta il pacchetto.

Limiti relativi alle dimensioni dei pacchetti

Nuget.org ha un limite di dimensioni del pacchetto di circa 250 MB. Quando viene caricato un pacchetto che supera tale limite, viene visualizzato l'errore seguente:

Il file del pacchetto supera il limite di dimensioni. Riprova.

Se il push di tale pacchetto viene eseguito dalla riga di comando, viene generato l'output seguente:

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

Se si verificano questi errori, è consigliabile rivedere il contenuto del pacchetto per ridurne le dimensioni. Se si inseriscono i simboli di debug nel pacchetto, è consigliabile pubblicarli separatamente. Gli altri asset possono essere pubblicati separatamente come uno o più pacchetti di dipendenza per distribuirli in blocchi più piccoli.

Convalida e indicizzazione dei pacchetti

I pacchetti inviati a nuget.org vengono sottoposti a diverse convalide, ad esempio i controlli antivirus e i pacchetti esistenti vengono analizzati periodicamente. Quando il pacchetto supera tutti i controlli di convalida, potrebbe essere necessario un po' di tempo per essere indicizzato e visualizzato nei risultati della ricerca. Durante l'indicizzazione del pacchetto, viene visualizzato in Pacchetti non elencati e viene visualizzato il messaggio seguente nella pagina del pacchetto:

Screenshot of a message indicating that a package isn't yet published.

Una volta completata la convalida e l'indicizzazione, si riceve un messaggio di posta elettronica in cui il pacchetto è stato pubblicato correttamente. Se il pacchetto non riesce un controllo di convalida, la pagina del pacchetto viene aggiornata per visualizzare l'errore associato e viene visualizzato un messaggio di posta elettronica di notifica.

La convalida e l'indicizzazione dei pacchetti richiedono in genere meno di 15 minuti. Se la pubblicazione dei pacchetti richiede più tempo del previsto, controllare nuget.org stato in status.nuget.org. Se tutti i sistemi sono operativi e il pacchetto non viene pubblicato correttamente entro un'ora, contattare nuget.org usando il collegamento Contattare il supporto tecnico nella pagina del pacchetto.

Per visualizzare lo stato del pacchetto, selezionare Gestisci pacchetti sotto il nome dell'account in alto a destra in nuget.org e selezionare il pacchetto da Pacchetti pubblicati o Pacchetti non elencati.

Gestire i proprietari dei pacchetti in nuget.org

I proprietari dei pacchetti dispongono di autorizzazioni complete per il pacchetto, inclusa l'aggiunta e la rimozione di altri proprietari e la pubblicazione degli aggiornamenti.

Anche se il file con estensione nuspec del pacchetto NuGet definisce gli autori del pacchetto, nuget.org non usa tali metadati per definire la proprietà. Al contrario, nuget.org assegna la proprietà alla persona che pubblica il pacchetto, all'utente connesso che ha caricato il pacchetto o all'utente la cui chiave API è stata usata con dotnet push, nuget SetApiKeyo nuget push.

Per modificare la proprietà di un pacchetto:

  1. Accedere a nuget.org con l'account proprietario del pacchetto.

  2. Selezionare il nome dell'account in alto a destra, selezionare Gestisci pacchetti ed espandere Pacchetti pubblicati.

  3. Selezionare il pacchetto da gestire e sul lato destro della pagina del pacchetto selezionare Gestisci pacchetto.

  4. Nella pagina Gestione pacchetti selezionare Proprietari.

  5. Effettua una delle seguenti azioni:

    • Selezionare Rimuovi per rimuovere il proprietario corrente.

    • Aggiungere un proprietario in Aggiungi proprietario immettendo il nome utente e un messaggio e selezionando Aggiungi.

      Questa azione invia un messaggio di posta elettronica al nuovo comproprietario con un collegamento di conferma. Dopo la conferma, tale persona ha le autorizzazioni complete per aggiungere e rimuovere i proprietari. Fino a quando non viene confermata, la sezione Proprietari correnti mostra l'approvazione in sospeso per tale persona.

Per trasferire la proprietà, come quando la proprietà cambia o un pacchetto viene pubblicato con l'account errato, aggiungere il nuovo proprietario. Dopo aver confermato la proprietà, è possibile rimuovere il vecchio proprietario dall'elenco.

Per assegnare la proprietà a una società o a un gruppo, creare un account nuget.org con un alias di posta elettronica che inoltra ai membri del team appropriati. Ad esempio, vari pacchetti di Microsoft ASP.NET sono di proprietà condivisa dagli account microsoft e aspnet .

In alcuni casi, un pacchetto potrebbe non avere un proprietario attivo. Ad esempio, il proprietario originale potrebbe aver lasciato la società che ha prodotto il pacchetto. Se si è il proprietario legittimo di un pacchetto ed è necessario riottenere la proprietà, usare il modulo di contatto in nuget.org per spiegare la situazione al team NuGet. Il team segue un processo per verificare la proprietà, incluso il tentativo di individuare il proprietario esistente e può inviare un nuovo invito per diventare il proprietario del pacchetto.

Passaggi successivi