Dela via


Vad händer när ett NuGet-paket installeras?

Enkelt sagt, de olika NuGet-verktygen skapar vanligtvis en referens till ett paket i projektfilen eller packages.config, och utför sedan en paketåterställning som effektivt installerar paketet. Undantaget är nuget install, som endast expanderar paketet till en packages mapp och inte ändrar några andra filer.

Den allmänna processen är följande:

  1. (Alla verktyg utom nuget.exe) Registrera paketidentifieraren och versionen i projektfilen eller packages.config.

    Om installationsverktyget är Visual Studio eller dotnet CLI försöker verktyget först installera paketet. Om det är inkompatibelt läggs paketet inte till i projektfilen eller packages.config.

  2. Hämta paketet:

    • Kontrollera om paketet (med exakt identifer och versionsnummer) redan är installerat i mappen global-packages enligt beskrivningen i Hantera globala paket och cachemappar.

    • Om paketet inte finns i mappen global-packages försöker du hämta det från de källor som anges i konfigurationsfilerna. Konfigurationer för paketkällamappning tillämpas just nu. För onlinekällor försöker du först hämta paketet från HTTP-cachen om inte -NoHttpCache har angetts med nuget.exe kommandon eller --no-http-cache har angetts med dotnet restore. (Visual Studio och dotnet add package använd alltid cachen.) Om ett paket används från cacheminnet visas "CACHE" i utdata. Cachen har en förfallotid på 30 minuter.

    • Om paketet har angetts med hjälp av en flytande version, eller utan en lägsta version, kontaktar NuGet alla källor för att ta reda på den bästa matchningen. Exempel: 1.*, (, 2.0.0].

    • Om paketet inte finns i HTTP-cachen försöker du ladda ned det från de källor som anges i konfigurationen. Om ett paket laddas ned visas "GET" och "OK" i utdata. NuGet loggar http-trafik på normal utförlighet.

    • Om paketet inte kan hämtas från några källor misslyckas installationen just nu med ett fel, till exempel NU1103. Observera att fel från nuget.exe kommandon endast visar den senast kontrollerade källan, men innebär att paketet inte var tillgängligt från någon källa.

    När du hämtar paketet kan ordningen på källorna i NuGet-konfigurationen gälla:

    • NuGet kontrollerar källornas lokala mapp och nätverksresurser innan du kontrollerar HTTP-källor.
  3. Spara en kopia av paketet och annan information i mappen http-cache enligt beskrivningen i Hantera globala paket och cachemappar.

  4. Om det laddas ned installerar du paketet i mappen global-packages per användare. NuGet skapar en undermapp för varje paketidentifierare och skapar sedan undermappar för varje installerad version av paketet.

  5. NuGet installerar paketberoenden efter behov. Den här processen kan uppdatera paketversioner enligt beskrivningen i Beroendehantering.

  6. Uppdatera andra projektfiler och mappar:

    • För projekt som använder PackageReference uppdaterar du det paketberoendediagram som lagras i obj/project.assets.json. Själva paketinnehållet kopieras inte till någon projektmapp.
    • Uppdatera app.config och/eller web.config om paketet använder käll- och konfigurationsfiltransformeringar.
  7. (Endast Visual Studio) Visa paketets readme-fil, om den är tillgänglig, i ett Visual Studio-fönster.

Njut av din produktiva kodning med NuGet-paket!