Dela via


Installera om och uppdatera NuGet-paket i Visual Studio

Ibland kan paketreferenser brytas inom ett Visual Studio projekt. Om du avinstallerar och installerar om samma version av paketet återställs ofta referenserna till arbetsordningen. Att uppdatera ett paket, som installerar en uppdaterad version, kan också lösa problemet. Den här artikeln beskriver hur du installerar om och uppdaterar NuGet-paket för att hantera brutna paketreferenser och brutna projekt.

Anmärkning

Vägledningen i den här artikeln gäller endast för projekt som använder hanteringsformatet packages.config . För PackageReference projekt korrigerar en återställningsåtgärd automatiskt brutna referenser.

Vanliga scenarier

Här följer några vanliga scenarier där du kan stöta på brutna paketreferenser i ditt Visual Studio projekt.

Scenario Description Lösning / Beslut
Brutna referenser efter paketåterställning Du öppnar ditt Visual Studio projekt och återställer NuGet-paket, men brutna paketreferenser finns kvar. Om du vill åtgärda referenserna kan du prova att installera om varje paket separat.
Brutet projekt på grund av borttagna filer Borttagna (saknade) paketfiler gör att projektet bryts. NuGet förhindrar inte borttagning av objekt som du lägger till från paket. Det kan vara enkelt att oavsiktligt ändra innehåll som installerats från ett paket och bryta projektet. Om du vill återställa projektet kan du prova att installera om de berörda paketen.
Brutet projekt efter paketuppdatering En paketuppdatering bryter projektet. Kompletterande uppdateringar av ett beroendepaket orsakar vanligtvis den här typen av fel. Om du vill återställa beroendets tillstånd till den tidigare arbetsordningen kan du prova att installera om det specifika beroende paketet.
Brutna referenser efter projektomtagning eller uppgradering En projektretarget- eller uppgraderingsprocess orsakar felaktiga paketreferenser. När du har ändrat mål för ditt projekt visar NuGet ett kompileringsfel. Skapa en varningslista över paket som kan behöva installeras om. Eller så visar NuGet ett fel i projektuppgraderingsloggen när du har uppgraderat projektet. Loggfilen visar paket som kan behöva installeras om. Om du vill lösa problem på grund av en ändring i målramverket kan du prova att installera om ett eller flera paket.
Paketändringar under utveckling Paketförfattare behöver ofta installera om samma version av ett paket som de utvecklar för närvarande för att testa sina ändringar. Om du vill installera om ett paket under utveckling använder du kommandot Update-Package -reinstall i NuGet Package Manager Console i Visual Studio. Konsolen innehåller flexibla alternativ för att uppdatera och installera om paket.

Implementeringsalternativ

Du har flera alternativ för hur du uppdaterar och installerar om NuGet-paket. Vanliga metoder är NuGet Package Manager UI-alternativ, NuGet-Package Manager-konsolen och NuGet-kommandoradsgränssnittet (CLI).

Package Manager användargränssnitt

Förutom Package Manager-konsolen innehåller Package Manager användargränssnittet även menyalternativ för att installera, uppdatera och avinstallera paket.

  • Om du vill uppdatera ett paket i användargränssnittet går du till fliken Uppdateringar , väljer ett eller flera paket och väljer sedan Uppdatera.

  • Om du vill installera om ett paket avinstallerar du först paketet och installerar det igen:

    1. Gå till fliken Installerad , välj ett paket och registrera dess namn och välj sedan Avinstallera.
    2. Gå till fliken Bläddra och sök efter paketnamnet, välj paketet och välj sedan Installera.

Package Manager-konsolen

Du kan komma åt Package Manager-konsolen under Tools>NuGet Package Manager>Package Manager Console.

  • För att uppdatera ett paket tillhandahåller Package Manager-konsolen kommandot Update-Package.

  • Om du vill installera om ett paket kan du använda Update-Package kommandot med parametern -reinstall . Den här metoden är det enklaste alternativet om det är kompatibelt med din konfiguration.

Mer information finns i avsnitten Update-Package-kommandot och Överväganden för ominstallation av paket.

NuGet CLI

NuGet CLI, nuget.exe, är kommandoradsverktyget för Windows som innehåller alla NuGet-funktioner.

  • Kör följande kommando för att uppdatera ett installerat paket. För <package-configuration-file-path> använder du sökvägen till din packages.config-fil.

    nuget update <package-configuration-file-path>

  • Om du vill installera om alla NuGet-paket tar du bort paketmappen och kör sedan följande kommando.

    • För <package-configuration-file-path> använder du sökvägen till din packages.config-fil.
    • För <packages-folder-path> använder du sökvägen till paketmappen.

    nuget install <package-configuration-file-path> -OutputDirectory <packages-folder-path>

  • Om du vill installera om ett enda paket går du till paketmappen och tar bort undermappen för paketet. Kör sedan följande kommando.

    • För <ID>använder du ID:t för det paket som du vill installera om.
    • För <packages-folder-path> använder du sökvägen till paketmappen.

    nuget install <ID> -OutputDirectory <packages-folder-path>

    Om du inte använder den senaste versionen av paketet kör du följande kommando i stället för att ange den version som du använder:

    nuget install <ID> -Version <version> -OutputDirectory <packages-folder-path>

Anmärkning

Den här artikeln innehåller ingen motsvarande procedur för dotnet CLI, eftersom när du kör dotnet restore kommandot använder dotnet CLI NuGet för att fastställa beroenden och ladda ned alla nödvändiga NuGet-paket. Mer information finns i Återställa NuGet-paket med dotnet CLI.

Begränsningar för uppgraderingsversioner

Om du installerar om eller uppdaterar ett paket installeras alltid den senaste versionen som är tillgänglig från paketkällan som standard. Projekt som använder hanteringsformatet packages.config kan dock specifikt begränsa det tillåtna NuGet-paketversionsintervallet.

Anta att ditt program endast fungerar med version 1.x av ett paket, men inte med version 2.0 eller senare, på grund av en större ändring i paket-API:et. För att säkerställa att ditt program fungerar som förväntat vill du begränsa NuGet-paketuppgraderingar till endast version 1.x. Begränsningen hjälper till att förhindra oavsiktliga uppdateringar som kan bryta ditt program.

Om du vill ange en begränsning öppnar du filenpackages.config i en textredigerare. Leta upp det beroende som du vill begränsa och lägg till allowedVersions attributet med önskat versionsintervall.

I följande exempel visas hur du begränsar uppdateringar till version 1.x genom att ange allowedVersions attributet till [1,2):

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="ExamplePackage" version="1.1.0" allowedVersions="[1,2)" />

    <!-- ... -->
</packages>

Använd i alla fall notationen som beskrivs i Paketversionshantering.

Update-Package kommando

Kommandot Update-Package i Package Manager-konsolen är det enklaste sättet att installera om ett paket och åtgärda brutna referenser. Den här metoden kan dock inte användas i alla scenarier. Du kan använda kommandot för att uppdatera ett installerat paket, men inte för att göra en första installation. Om du försöker uppdatera eller installera om ett paket som inte redan är installerat i konfigurationen returnerar kommandot ett fel. Innan du arbetar med kommandot läser du avsnittet Ominstallera paketöverväganden .

För PackageReference projekt och lösningar uppdateras paket alltid till den senaste versionen (exklusive förhandsversionspaket). Projekt som använder hanteringsformatet packages.config kan däremot begränsa uppgraderingsversioner enligt beskrivningen i Begränsningar för uppgraderingsversioner.

Följande avsnitt innehåller exempel på hur du arbetar med kommandot.

Alternativ för ominstallation av paket

Använd följande kommando för en grundläggande ominstallation. Om du vill identifiera ett specifikt NuGet-paket kan du använda den valfria -Id parametern.

# Reinstall the package named <package-name>.
Update-Package -Id <package-name> -reinstall

Update-Package Det är enklare att använda kommandot än att ta bort ett paket och sedan försöka hitta paketet och rätt version i NuGet-galleriet.

Uppdatera paketalternativ

Samma kommando utan parametern -reinstall uppdaterar ett paket till en nyare version, om tillämpligt. Kommandot returnerar ett fel om det angivna paketet inte redan är installerat i ett projekt.

# Update the package named <package-name>.
Update-Package <package-name>

projekt och lösningsalternativ

Som standard Update-Package påverkar kommandot alla projekt i en lösning. Om du vill begränsa åtgärden till ett visst projekt använder du parametern -ProjectName . Ange namnet på projektet så som det visas i Visual Studio Solution Explorer.

Följande kommando installerar om ett NuGet-paket för ett specifikt projekt i din lösning. Använd parametern <package-name> för att ange namnet på NuGet-paketet som ska installeras om.

# Reinstall the package named <package-name> in MyProject only.
Update-Package <package-name> -ProjectName MyProject -reinstall

Om du vill installera om alla paket i projektet använder du parametern -ProjectName men anger inget visst paket. Du kan följa samma metod för att uppdatera paketen i projektet, som du ser i det här exemplet:

# Update all packages in MyProject only.
Update-Package -ProjectName MyProject

Om du vill uppdatera alla paket i en lösning använder Update-Package du kommandot självt utan några andra argument eller parametrar.

Viktigt!

Se till att använda följande form av kommandot noggrant. Kommandoprocessen kan ta lång tid att utföra alla uppdateringar.

# Update all packages in all projects in the solution.
Update-Package 

Saker att tänka på vid ominstallation av paket

Om du tänker använda Update-Package kommandot för att installera om paket läser du följande överväganden för att säkerställa kompatibilitet med ditt konfigurationsscenario.

  • Paket och deras beroenden kanske inte stöder ett ändrat målsättningsramverk.
  • När attributet requireReinstallation är inställt på true genererar Visual Studio byggvarningar för berörda paket.
  • Att installera om ett paket och hantera versionsbegränsningar kan leda till kompatibilitetsproblem med beroendeversioner.
  • Om du installerar om ett specifikt paket kan beroende paket brytas.

Paketet stöder inte projektmålramverk

Om du gör om ditt projektmålramverk kanske ett eller flera paket inte stöder den nya målkonfigurationen.

Vanligtvis kan du installera om ett paket med hjälp Update-Package -reinstall <package-name> av kommandot . Ett paket som är installerat mot ett gammalt målramverk avinstalleras och samma paket installeras mot projektets nya målramverk.

I vissa fall kanske ett paket inte stöder det nya målramverket. Här följer några av de problem du kan stöta på:

  • Om ett paket stöder portabla klassbibliotek (PCL:er) och du omdirigerar projektet till en kombination av plattformar som inte längre stöds av paketet, kan referenser till paketet saknas efter ominstallationen.

  • Referenser som saknas kan förekomma i paket som du använder direkt eller i paket som installeras som beroenden. Alla paket som du använder direkt kan ha stöd för det nya målramverket även om dess beroenden inte gör det.

  • Om du installerar om paket efter att ha ändrat målplattform för ditt program kan det resultera i byggfel eller körfel. I det här fallet kan du behöva återställa målramverket eller söka efter alternativa paket som stöder det nya målramverket korrekt.

Attributet requireReinstallation är inställt på true

När du har ändrat målriktningen för ditt projekts målramverk eller uppgraderat NuGet-paket kan NuGet lägga till attributet requireReinstallation i filen packages.config för ditt projekt. Om NuGet identifierar berörda paket under omtargetings- eller uppgraderingsprocessen lägger det till ett requireReinstallation="true" attribut till packages.config-filen för alla berörda paketreferenser. Därför skapar varje efterföljande version av projektet i Visual Studio byggvarningar för dessa paket. Varningarna visas som en påminnelse om att installera om det berörda paketet.

Inkompatibilitet för paketberoendeversion

Kommandot Update-Package -reinstall installerar om samma version av ett installerat paket och den senaste versionen av eventuella beroenden. För att åtgärda problem med inkompatibilitet av versioner kan du ange begränsningar för versionsintervall för att styra konfigurationen. NuGet följer begränsningarna och uppdaterar paketberoendena till nyare versioner endast efter behov för att åtgärda ett problem.

  • Om dina villkorsinställningar gör att ett beroende återgår till en tidigare version under en paketominstallation kan du åtgärda problemet med hjälp Update-Package <dependency-name> av kommandot . Det här kommandot installerar om det angivna beroendet utan att påverka det beroende paketet.

  • Du kan också använda Update-Package -reinstall <package-name> -ignoreDependencies kommandot . Det här alternativet installerar om samma version av det ursprungliga paketet, men det installerar inte om beroenden. Om du använder den här metoden när du uppdaterar paketberoenden kan det leda till ett brutet konfigurationstillstånd.

Brutet beroende paket

När du installerar om ett visst paket uppdateras inte alla installerade paket som är beroende av det ominstallerade paketet. Versionerna av dessa andra installerade paket förblir desamma. Därför kan en ominstallation av ett beroende bryta ett beroende paket.