Přeinstalace a aktualizace balíčků NuGet v sadě Visual Studio
Někdy se odkazy na balíčky můžou přerušit v rámci projektu sady Visual Studio. Odinstalace a přeinstalace stejné verze balíčku často obnovuje odkazy na pracovní pořadí. Problém může vyřešit i aktualizace balíčku, který nainstaluje aktualizovanou verzi. Tento článek popisuje, jak přeinstalovat a aktualizovat balíčky NuGet tak, aby řešily poškozené odkazy na balíčky a poškozené projekty.
Poznámka:
Pokyny v tomto článku platí pouze pro projekty, které používají formát správy packages.config . U projektů PackageReference operace obnovení automaticky opravuje přerušené odkazy.
Obvyklé scénáře
Tady je několik běžných scénářů, kdy můžete v projektu sady Visual Studio narazit na nefunkční odkazy na balíčky.
Scénář | Popis | Rozlišení |
---|---|---|
Nefunkční odkazy po obnovení balíčku | Otevřete projekt sady Visual Studio a obnovte balíčky NuGet, ale nefunkční odkazy na balíčky zůstanou zachovány. | Pokud chcete odkazy opravit, zkuste jednotlivé balíčky přeinstalovat samostatně. |
Poškozený projekt kvůli odstraněným souborům | Odstraněné (chybějící) soubory balíčku způsobí přerušení projektu. NuGet nezabrání odstranění položek, které přidáte z balíčků. Neúmyslně upravit obsah nainstalovaný z balíčku a přerušit projekt může být snadné. | Pokud chcete projekt obnovit, zkuste přeinstalovat ovlivněné balíčky. |
Poškozený projekt po aktualizaci balíčku | Aktualizace balíčku přeruší projekt. Doprovodné aktualizace balíčku závislostí obvykle způsobují tento typ selhání. | Pokud chcete obnovit stav závislosti na předchozím pracovním pořadí, zkuste přeinstalovat konkrétní závislý balíček. |
Nefunkční odkazy po opětovném cílení nebo upgradu projektu | Proces opětovného cílení nebo upgradu projektu způsobí nefunkční odkazy na balíčky. Po opětovném cílení projektu se v NuGetu zobrazí chyba sestavení. Seznam balíčků se seznamem upozornění sestavení, které mohou být potřeba přeinstalovat. Nebo po upgradu projektu se v protokolu upgradu projektu zobrazí chyba NuGet. Soubor protokolu obsahuje balíčky, které mohou být potřeba přeinstalovat. | Pokud chcete vyřešit problémy způsobené změnou cílové architektury, zkuste přeinstalovat jeden nebo více balíčků. |
Změny balíčků v rámci vývoje | Autoři balíčků často potřebují přeinstalovat stejnou verzi balíčku, který vyvíjí za účelem testování změn. | Konzola Správce balíčků NuGet v sadě Visual Studio poskytuje flexibilní možnosti pro aktualizaci a přeinstalaci balíčků. K přeinstalaci balíčku v rámci vývoje můžete použít Update-Package -reinstall tento příkaz. |
Možnosti implementace
Máte několik možností, jak aktualizovat a přeinstalovat balíčky NuGet. Mezi běžné metody patří možnosti uživatelského rozhraní NuGet Správce balíčků, konzola Správce balíčků NuGet a rozhraní příkazového řádku NuGet (rozhraní příkazového řádku).
Uživatelské rozhraní Správce balíčků
Kromě rozhraní konzoly poskytuje uživatelské rozhraní Správce balíčků také možnosti nabídky pro instalaci, aktualizaci a odinstalaci balíčků.
Pokud chcete balíček aktualizovat, otevřete kartu Aktualizace, zvolte jeden nebo více balíčků a pak vyberte Aktualizovat.
Pokud chcete balíček přeinstalovat, nejprve balíček odinstalujte a pak ho znovu nainstalujte. Otevřete kartu Nainstalováno, zvolte balíček a poznamenejte si jeho název a pak vyberte Odinstalovat. Přepněte na kartu Procházet a vyhledejte název balíčku, zvolte balíček a pak vyberte Nainstalovat.
Konzola Správce balíčků
Ke konzole Správce balíčků se dostanete v části Nástroje>NuGet Správce balíčků> Správce balíčků Konzola.
K aktualizaci balíčku poskytuje
Update-Package
konzola Správce balíčků příkaz.K přeinstalaci balíčku můžete použít stejný příkaz s parametrem
-reinstall
. Tento přístup je nejjednodušší volbou, pokud je kompatibilní s vaší konfigurací.
Další informace najdete v částech Věnovaném přeinstalaci balíčku update a balíčku.
Rozhraní příkazového řádku NuGet
Rozhraní příkazového řádku NuGet , nuget.exe
je nástroj příkazového řádku pro Windows, který poskytuje všechny funkce NuGet.
Pokud chcete aktualizovat nainstalovaný balíček, spusťte
nuget update
příkaz.Pokud chcete přeinstalovat všechny balíčky NuGet, odstraňte složku balíčku a spusťte
nuget install
příkaz.Pokud chcete přeinstalovat jeden balíček, odstraňte složku balíčku a spusťte
nuget install <id>
příkaz, kde<id>
argument je ID konkrétního balíčku.
Poznámka:
Pro rozhraní příkazového řádku dotnet není vyžadován ekvivalentní postup. Když spustíte dotnet restore
příkaz, rozhraní příkazového řádku dotnet použije NuGet k určení závislostí a stažení všech potřebných balíčků NuGet. Další informace najdete v tématu Obnovení balíčků NuGet pomocí rozhraní příkazového řádku dotnet.
Omezení verzí upgradu
Ve výchozím nastavení přeinstalace nebo aktualizace balíčku vždy nainstaluje nejnovější verzi dostupnou ze zdroje balíčku. Projekty, které používají packages.config
formát správy, však mohou konkrétně omezit povolený rozsah verzí balíčku NuGet.
Předpokládejme, že vaše aplikace funguje pouze s verzí 1.x balíčku, ale ne s verzí 2.0 nebo novější, a to kvůli významné změně v rozhraní API balíčku. Chcete-li zajistit, aby vaše aplikace fungovala podle očekávání, chcete omezit upgrady balíčků NuGet pouze na verze 1.x. Toto omezení pomáhá zabránit náhodným aktualizacím, které by mohly narušit vaši aplikaci.
Pokud chcete nastavit omezení, otevřete packages.config
soubor v textovém editoru. Vyhledejte závislost, kterou chcete omezit, a přidejte atribut s požadovaným rozsahem allowedVersions
verzí.
Následující příklad ukazuje, jak omezit aktualizace na verzi 1.x nastavením atributu allowedVersions
na [1,2)
:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ExamplePackage" version="1.1.0" allowedVersions="[1,2)" />
<!-- ... -->
</packages>
Příkaz Update-Package
Příkaz Update-Package v konzole Správce balíčků je nejjednodušší způsob, jak přeinstalovat balíček a vyřešit nefunkční odkazy. Tento přístup ale není použitelný ve všech scénářích. Příkaz můžete použít k aktualizaci nainstalovaného balíčku, ale ne k počáteční instalaci. Pokud se pokusíte aktualizovat nebo přeinstalovat balíček, který ještě není v konfiguraci nainstalovaný, vrátí příkaz chybu. Než začnete s příkazem pracovat, nezapomeňte si projít část Aspekty přeinstalace balíčku.
Aktualizace balíčků v projektu nebo řešení pomocí PackageReference vždy aktualizuje nejnovější verzi balíčku (s výjimkou předběžných balíčků). Projekty, které používají packages.config
formát správy, mohou omezit verze upgradu, jak je popsáno v omezeních verzí upgradu.
Následující části obsahují příklady pro práci s příkazem.
Přeinstalace možností balíčku
Tady je základní použití příkazu k přeinstalaci. K identifikaci konkrétního balíčku NuGet můžete použít volitelný -Id
parametr.
# Reinstall the package named <package_name>
Update-Package -Id <package_name> –reinstall
Update-Package
Použití příkazu je jednodušší než odebrání balíčku a pokus o vyhledání stejného balíčku v galerii NuGet se stejnou verzí.
Možnosti aktualizace balíčku
Stejný příkaz bez parametru -reinstall
aktualizuje balíček na novější verzi, pokud je to možné. Příkaz vrátí chybu, pokud zadaný balíček ještě není v projektu nainstalovaný.
# Update the package named <package_name>
Update-Package <package_name>
Možnosti projektu a řešení
Ve výchozím nastavení má příkaz vliv na Update-Package
všechny projekty v řešení. Pokud chcete akci omezit na konkrétní projekt, použijte -ProjectName
parametr. Zadejte název projektu, jak se zobrazí v sadě Visual Studio Průzkumník řešení.
Následující příkaz přeinstaluje balíček NuGet pro konkrétní projekt ve vašem řešení. V parametru <package_name>
je uveden název konkrétního balíčku NuGet, který se má přeinstalovat.
# Reinstall the package named <package_name> in MyProject only
Update-Package <package_name> -ProjectName MyProject -reinstall
Pokud chcete přeinstalovat všechny balíčky v projektu, použijte -ProjectName
parametr tak, že nezadáte žádný konkrétní balíček. Stejný přístup můžete použít k aktualizaci balíčků v projektu, jak je znázorněno v tomto příkladu:
# Update all packages in MyProject only
Update-Package -ProjectName MyProject
Pokud chcete aktualizovat všechny balíčky v řešení, stačí použít Update-Package
samotný příkaz bez dalších argumentů nebo parametrů.
Důležité
Nezapomeňte pečlivě použít následující formu příkazu. Provedení všech aktualizací může proces příkazu trvat poměrně dlouho.
# Update all packages in all projects in the solution
Update-Package
Důležité informace o přeinstalaci balíčků
Pokud máte v úmyslu Update-Package
použít příkaz k přeinstalaci balíčků, projděte si následující aspekty, abyste zajistili kompatibilitu se scénářem konfigurace.
- Balíčky a jejich závislosti nemusí podporovat retargetovanou cílovou architekturu projektu.
requireReinstallation
Pokud je atribut nastavený natrue
, Visual Studio vydává upozornění sestavení pro ovlivněné balíčky.- Přeinstalace balíčku a omezení verzí můžou zavádět problémy s kompatibilitou verzí závislostí.
- Přeinstalace konkrétního balíčku může způsobit přerušení závislých balíčků.
Balíček nepodporuje cílovou architekturu projektu
Pokud retargetujete cílovou architekturu projektu, jeden nebo více balíčků nemusí podporovat novou cílovou konfiguraci.
Obvykle funguje přeinstalace balíčku pomocí Update-Package –reinstall <package_name>
příkazu. Balíček nainstalovaný proti staré cílové rozhraní se odinstaluje a stejný balíček se nainstaluje proti nové cílové rozhraní projektu.
V některých případech nemusí balíček podporovat novou cílovou architekturu. Tady jsou některé problémy, se kterými se můžete setkat:
Pokud balíček podporuje přenosné knihovny tříd (PCLS) a projekt znovu nasměrujete na kombinaci platforem, které balíček už nepodporuje, můžou po přeinstalaci chybět odkazy na balíček.
Tento problém se může zobrazit pro balíčky, které používáte přímo nebo pro balíčky nainstalované jako závislosti. Jakýkoli balíček, který používáte přímo, může podporovat novou cílovou architekturu, i když jejich závislosti nebudou.
Pokud přeinstalace balíčků po opětovném cílení vaší aplikace způsobí chyby sestavení nebo modulu runtime, možná budete muset vrátit cílovou architekturu nebo vyhledat alternativní balíčky, které správně podporují vaši novou cílovou architekturu.
atribut requireReinstallation nastavený na hodnotu true
Po opětovném cílení cílové architektury projektu nebo upgradu balíčků NuGet může NuGet přidat requireReinstallation
atribut do packages.config
souboru projektu. Pokud NuGet zjistí ovlivněné balíčky během procesu opětovného cílení nebo upgradu, přidá requireReinstallation="true"
do packages.config
souboru atribut pro všechny odkazy na ovlivněné balíčky. V důsledku toho každé následné sestavení projektu v sadě Visual Studio vyvolá upozornění sestavení pro tyto balíčky. Upozornění se zobrazí jako připomenutí k přeinstalaci ovlivněného balíčku.
Nekompatibilitu verze závislostí balíčku
Příkaz Update-Package –reinstall
přeinstaluje stejnou verzi nainstalovaného balíčku a nejnovější verzi všech závislostí. Pokud chcete vyřešit problémy s nekompatibilitou verze, můžete nastavit omezení rozsahu verzí pro řízení konfigurace. NuGet dodržuje omezení a aktualizuje závislosti balíčků na novější verze pouze podle potřeby k vyřešení problému.
Pokud nastavení omezení způsobí, že se závislost během přeinstalace balíčku vrátí k dřívější verzi, můžete problém vyřešit příkazem
Update-Package <dependency_name>
. Tento příkaz přeinstaluje zadanou závislost bez ovlivnění závislého balíčku.Můžete také použít
Update-Package –reinstall <packageName> -ignoreDependencies
příkaz. Tato možnost přeinstaluje stejnou verzi původního balíčku, ale nepřeinstaluje závislosti. Tento přístup použijte při aktualizaci závislostí balíčků, což může vést k nefunkčnímu stavu konfigurace.
Poškozený závislý balíček
Při přeinstalaci konkrétního balíčku se neaktualizují všechny nainstalované balíčky, které závisí na přeinstalovaném balíčku. Verze těchto dalších nainstalovaných balíčků zůstanou stejné. V důsledku toho může přeinstalace závislosti narušit závislý balíček.
Související články
- Zkontrolujte formát správy packages.config.
- Implementujte PackageReference v souborech projektu.
- V konzole NuGet Správce balíčků v sadě Visual Studio použijte příkaz Update-Package.
- Prozkoumejte formáty zápisu verzí balíčků.