Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Gå till fliken Installerad , välj ett paket och registrera dess namn och välj sedan Avinstallera.
- 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-Packagekommandot 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>- För
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>- För
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åtruegenererar 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> -ignoreDependencieskommandot . 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.
Relaterat innehåll
- Granska hanteringsformatet
packages.config. - Implementera
PackageReferencei projektfiler. - Använd kommandot Update-Package i NuGet Package Manager Console i Visual Studio.
- Utforska format för versionsnotering av paket.