Condividi tramite


Cosa accade quando viene installato un pacchetto NuGet?

Detto semplicemente, i diversi strumenti NuGet creano in genere un riferimento a un pacchetto nel file di progetto o packages.config, quindi eseguono un ripristino del pacchetto, che installa effettivamente il pacchetto. L'eccezione è nuget install, che espande solo il pacchetto in una packages cartella e non modifica altri file.

Il processo generale è il seguente:

  1. (Tutti gli strumenti tranne nuget.exe) Registrare l'identificatore e la versione del pacchetto nel file di progetto o packages.config.

    Se lo strumento di installazione è Visual Studio o l'interfaccia della riga di comando dotnet, lo strumento tenta innanzitutto di installare il pacchetto. Se non è compatibile, il pacchetto non viene aggiunto al file di progetto o packages.config.

  2. Acquisire il pacchetto:

    • Controllare se il pacchetto (per identificatore esatto e numero di versione) è già installato nella cartella global-packages , come descritto in Gestione dei pacchetti globali e delle cartelle della cache.

    • Se il pacchetto non si trova nella cartella global-packages , tentare di recuperarlo dalle origini elencate nei file di configurazione. A questo punto vengono applicate le configurazioni del mapping dell'origine del pacchetto. Per le fonti online, provare prima a recuperare il pacchetto dalla cache HTTP, a meno che -NoHttpCache non venga specificato con nuget.exe oppure --no-http-cache venga specificato con dotnet restore. (Visual Studio e dotnet add package usare sempre la cache). Se viene usato un pacchetto dalla cache, "CACHE" viene visualizzato nell'output. La cache ha una scadenza di 30 minuti.

    • Se il pacchetto è stato specificato usando una versione flottante o senza una versione minima, NuGet contatterà tutte le fonti per individuare la corrispondenza migliore. Esempio: 1.*, (, 2.0.0].

    • Se il pacchetto non si trova nella cache HTTP, tentare di scaricarlo dalle origini elencate nella configurazione. Se viene scaricato un pacchetto, nell'output vengono visualizzati "GET" e "OK". NuGet registra il traffico HTTP a livello di verbosità normale.

    • Se il pacchetto non può essere acquisito correttamente da qualsiasi origine, l'installazione non riesce a questo punto con un errore come NU1103. Si noti che gli errori dei nuget.exe comandi mostrano solo l'ultima origine controllata, ma implica che il pacchetto non era disponibile da alcuna origine.

    Quando si acquisisce il pacchetto, l'ordine delle origini nella configurazione nuGet può essere applicato:

    • NuGet controlla le origini delle cartelle locali e delle condivisioni di rete prima di controllare le origini HTTP.
  3. Salvare una copia del pacchetto e altre informazioni nella cartella http-cache come descritto in Gestione dei pacchetti globali e delle cartelle della cache.

  4. Se scaricato, installare il pacchetto nella cartella global-packages per utente. NuGet crea una sottocartella per ogni identificatore di pacchetto, quindi crea sottocartelle per ogni versione installata del pacchetto.

  5. NuGet installa le dipendenze dei pacchetti in base alle esigenze. Questo processo potrebbe aggiornare le versioni dei pacchetti nel processo, come descritto in Risoluzione delle dipendenze.

  6. Aggiornare altri file di progetto e cartelle:

    • Per i progetti che usano PackageReference, aggiornare il grafico delle dipendenze del pacchetto archiviato in obj/project.assets.json. Il contenuto del pacchetto stesso non viene copiato in alcuna cartella del progetto.
    • Aggiornare app.config e/o web.config se il pacchetto usa trasformazioni di file di origine e configurazione.
  7. (solo Visual Studio) Visualizzare il file leggimi del pacchetto, se disponibile, in una finestra di Visual Studio.

È possibile sfruttare la produttività del codice con i pacchetti NuGet.