Obnovení balíčků pomocí obnovení balíčku NuGet

Obnovení balíčku NuGet obnoví všechny závislosti projektu uvedené v souboru projektu nebo v souboru packages.config . Balíčky můžete obnovit ručně pomocí nástroje nuget restore, dotnet restore, msbuild -t:restorenebo prostřednictvím sady Visual Studio. Příkazy dotnet build a dotnet run příkazy automaticky obnovují balíčky a sadu Visual Studio můžete nakonfigurovat tak, aby při sestavování projektu automaticky obnovuje balíčky.

Aby bylo možné zvýšit úroveň čistějšího vývojového prostředí a zmenšit velikost úložiště, zpřístupňuje obnovení balíčku všechny závislosti projektu, aniž by bylo nutné je ukládat do správy zdrojového kódu. Pokud chcete nakonfigurovat úložiště správy zdrojového kódu tak, aby se vyloučily binární soubory balíčků, přečtěte si téma Balíčky a správa zdrojového kódu.

Chování obnovení balíčku

Obnovení balíčku se pokusí nainstalovat všechny závislosti balíčku do stavu, který odpovídá <PackageReference>s v souboru projektu, například .csproj nebo <package>s v souboru packages.config . Obnovení balíčku nejprve podle potřeby nainstaluje přímé závislosti projektu a pak nainstaluje všechny závislosti těchto balíčků v celém grafu závislostí.

Pokud ještě není nainstalovaný potřebný balíček, nuGet se nejprve pokusí načíst z místních globálních balíčků nebo složek mezipaměti HTTP. Pokud balíček není v místních složkách, nuGet se ho pokusí stáhnout ze všech zdrojů nakonfigurovaných v sadě Visual Studio v >nástrojích Options>NuGet Správce balíčků> Package Sources.

Během obnovení NuGet ignoruje pořadí zdrojů balíčků a používá balíček z prvního zdroje, který reaguje na požadavky. Pokud obnovení selže, NuGet nehlásí selhání, dokud nekontroluje všechny zdroje. NuGet pak hlásí selhání pouze pro poslední zdroj v seznamu. Tato chyba znamená, že balíček nebyl k dispozici u žádného ze zdrojů, i když nevypisuje další selhání jednotlivě.

Další informace o chování NuGet naleznete v tématu Běžné konfigurace NuGet.

Obnovení balíčků

Pokud jsou odkazy na balíčky v souboru projektu nebo souboru packages.config správné, použijte preferovaný nástroj k obnovení balíčků:

Po úspěšném obnovení:

  • Pro projekty, které používají<PackageReference>, se balíček nachází v místní složce globálních balíčků a soubor obj/project.assets.json projektu se znovu vytvoří.
  • U projektů, které používají packages.config, se balíček zobrazí ve složce balíčků projektu.
  • Projekt by se teď měl úspěšně sestavit.

Pokud jsou odkazy na balíčky v souboru projektu nebo v souboru packages.config nesprávné a neodpovídají požadovanému stavu, nainstalujte nebo aktualizujte správné balíčky namísto obnovení balíčku.

Pokud po spuštění obnovení balíčku chybí balíčky nebo chyby související s balíčky, například ikony chyb v Průzkumník řešení, postupujte podle pokynů v tématu Řešení chyb obnovení balíčku nebo přeinstalujte nebo aktualizujte balíčky. V sadě Visual Studio poskytuje konzola Správce balíčků několik možností pro přeinstalaci balíčků. Další informace naleznete v tématu Použití aktualizace balíčku.

Obnovení balíčků v sadě Visual Studio

V sadě Visual Studio ve Windows můžete balíčky obnovit automaticky nebo ručně. Nejprve nakonfigurujte obnovení balíčku prostřednictvím možností nástrojů>>NuGet Správce balíčků.

Konfigurace možností obnovení balíčků sady Visual Studio

Na webu Tools>Options>NuGet Správce balíčků> General nakonfigurujte následující možnosti obnovení balíčku.

Screenshot that shows the NuGet Package Manager options.

Povolit NuGet stahování chybějících balíčků

Pokud chcete povolit obnovení balíčku a příkaz Obnovit balíčky NuGet, vyberte Povolit NuGet stahování chybějících balíčků. Tento výběr nastaví packageRestore/enabled nastavení v True části packageRestore globálního souboru NuGet.Config na adrese %AppData%\Roaming\NuGet ve Windows nebo ~/.nuget/NuGet/ v systému Mac nebo Linux.

<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
    </packageRestore>
</configuration>

Poznámka:

Pokud chcete toto nastavení globálně přepsat packageRestore/enabled , můžete před otevřením sady Visual Studio nastavit proměnnou prostředí EnableNuGetPackageRestore na hodnotu True nebo False.

Pokud chcete povolit nebo zakázat obnovení balíčků pro všechny uživatele v počítači, můžete nastavení konfigurace přidat do globálního souboru NuGet.Config ve Windows na adrese %ProgramData%\NuGet\Config, někdy v rámci konkrétní< složky IDE>\<Version>\<SKU> Visual Studio nebo v systému Mac/Linux na adrese ~/.local/share. Jednotliví uživatelé pak můžou podle potřeby povolit obnovení podle potřeby na úrovni projektu. Další podrobnosti o tom, jak NuGet upřednostňuje více konfiguračních souborů, najdete v tématu Běžné konfigurace NuGet.

Důležité

Pokud upravíte packageRestore nastavení v NuGet.Config přímo, restartujte Visual Studio tak, aby možnosti zobrazovaly aktuální hodnoty.

Automatická kontrola chybějících balíčků během sestavování

Výběrem možnosti Automaticky vyhledat chybějící balíčky během sestavování v sadě Visual Studio automaticky obnovíte všechny chybějící balíčky při spuštění sestavení ze sady Visual Studio. Toto nastavení nemá vliv na sestavení spuštěná z příkazového řádku MSBuild. Tento výběr nastaví packageRestore/automatic nastavení v TruepackageRestore části souboru NuGet.Config .

<configuration>
    <packageRestore>
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

U projektů, které nejsou ve stylu sady SDK, musíte vybrat Možnost Povolit NuGet stahovat chybějící balíčky a také automaticky kontrolovat chybějící balíčky během sestavování v sadě Visual Studio v možnostech, aby bylo možné povolit automatické obnovení.

Volba výchozího formátu správy balíčků

NuGet má dva formáty správy balíčků, PackageReference a packages.config. V rozevíracím seznamu v části Správa balíčků vyberte formát, který chcete použít. Můžete také vybrat, jestli chcete povolit výběr formátu při první instalaci balíčku.

Poznámka:

  • Pokud projekt nepodporuje oba formáty správy balíčků, NuGet používá formát správy balíčků, který je kompatibilní s projektem, což nemusí být výchozí nastavení v možnostech. NuGet se pak při první instalaci nezobrazí výzva k výběru, i když jste tuto možnost vybrali.

  • Pokud k instalaci prvního balíčku v projektu použijete konzolu Správce balíčků, NuGet nezobrazí výzvu k výběru formátu, i když je tato možnost vybrána v možnostech.

Ruční nebo automatické obnovení balíčků

Po povolení obnovení balíčku v možnostech můžete kliknout pravým tlačítkem na řešení v Průzkumník řešení a vybrat Obnovit balíčky NuGet a obnovit balíčky kdykoli.

Pokud jste v možnostech povolili automatické obnovení, k obnovení balíčku dojde automaticky při vytváření projektu ze šablony nebo sestavení projektu. V případě NuGetu 4.0+ se obnovení provede také automaticky, když provedete změny projektu ve stylu sady SDK.

U projektů, které používají<PackageReference>, se odkazy na balíčky zobrazí v sadě Visual Studio Průzkumník řešení v části Balíčky závislostí>. Balíčky, které se nenainstalují správně, když ručně obnovíte nebo spustíte ikony chyb zobrazení sestavení v Průzkumník řešení. Klikněte pravým tlačítkem na projekt, vyberte Spravovat balíčky NuGet a pomocí Správce balíčků NuGet odinstalujte a znovu nainstalujte ovlivněné balíčky. Další informace naleznete v tématu Přeinstalace a aktualizace balíčků.

Pokud se zobrazí chyba : Tento projekt odkazuje na balíčky NuGet, které v tomto počítači chybí, nebo je potřeba obnovit jeden nebo více balíčků NuGet, ale nepodařilo se to, protože nebyl udělen souhlas, ujistěte se, že jste povolili automatické obnovení. Starší projekty najdete v tématu Migrace na automatické obnovení balíčku. Podívejte se také na řešení potíží s chybami obnovení balíčku.

Obnovení pomocí rozhraní příkazového řádku dotnet

Příkaz dotnet restore obnoví balíčky, které soubor projektu obsahuje <PackageReference>. Další informace naleznete v tématu PackageReference v souborech projektu.

Balíčky pro obnovení .NET Core 2.0 a novějších a novějších dotnet build a dotnet run příkazy se automaticky obnovují. Od NuGetu 4.0 dotnet restore spustí stejný kód jako nuget restore.

Obnovení balíčku pomocí dotnet restore:

  1. Otevřete příkazový řádek a přepněte do adresáře, který obsahuje váš soubor projektu.
  2. Spusťte dotnet restore.

Důležité

Pokud chcete přidat chybějící odkaz na balíček do souboru projektu, použijte dotnet add balíček, který také běží restore.

Obnovení pomocí rozhraní příkazového řádku NuGet

Příkaz pro obnovení rozhraní příkazového řádku NuGet stáhne a nainstaluje všechny chybějící balíčky. Příkaz funguje u projektů, které pro odkazy na balíčky používají PackageReference nebo packages.config.

Podobně jako installpříkaz přidává balíčky pouze na disk, ale neupravuje soubor projektu ani packages.config.restore Pokud chcete přidat závislosti projektu, použijte uživatelské rozhraní nebo konzolu sady Visual Studio Správce balíčků.

Pokud chcete obnovit balíčky, spusťte následující příkaz:

nuget restore <projectPath>

Příkaz restore používá soubor řešení nebo soubor package.config v zadané cestě projektu.

Pokud chcete například obnovit všechny balíčky pro MySolution.sln v aktuálním adresáři, spusťte:

nuget restore MySolution.sln

Poznámka:

Pro projekty, které nepoužívají PackageReferencesadu SDK, použijte k obnovení balíčků příkaz msbuild -t:restore .

Obnovení pomocí nástroje MSBuild

K obnovení balíčků v NuGetu 4.x+ a MSBuildu 15.1+, které jsou součástí sady Visual Studio 2017 a vyšší, můžete použít msbuild -t:restore .

Tento příkaz obnoví balíčky v projektech, které používají PackageReference pro odkazy na balíčky. Počínaje verzí MSBuild 16.5+ příkaz podporuje také odkazy na balíčky packages.config při použití s -p:RestorePackagesConfig=true.

Použití obnovení nástroje MSBuild:

  1. Otevřete příkazový řádek pro vývojáře tak, že vyhledáte příkazový řádek pro vývojáře a spustíte ho z nabídky Start systému Windows, která nakonfiguruje všechny potřebné cesty pro nástroj MSBuild.

  2. Přepněte do složky projektu a zadejte msbuild -t:restore.

  3. Po dokončení obnovení zadejte msbuild znovu projekt. Ujistěte se, že výstup nástroje MSBuild indikuje, že sestavení bylo úspěšně dokončeno.

Poznámka:

Můžete použít msbuild -restore ke spuštění restore, opětovnému načtení projektu a sestavení, protože sestavení je výchozím cílem. Další informace naleznete v tématu Obnovení a sestavení pomocí jednoho příkazu MSBuild.

Obnovení s využitím Azure Pipelines nebo Azure DevOps Serveru

Při vytváření definice sestavení ve službě Azure Pipelines můžete do definice zahrnout úlohu obnovení rozhraní příkazového řádku NuGet nebo dotnet CLI před všemi úlohami sestavení. Některé šablony sestavení zahrnují ve výchozím nastavení úlohu obnovení.

Azure DevOps Server a TFS 2013 a novější automaticky obnovují balíčky během sestavování, pokud použijete šablonu týmového sestavení TFS 2013 nebo novější. Můžete také zahrnout krok sestavení pro spuštění možnosti obnovení příkazového řádku nebo volitelně migrovat šablonu sestavení do novější verze. Další informace naleznete v tématu Nastavení obnovení balíčku pomocí Team Foundation Build.

Verze balíčku omezení

Obnovení NuGet prostřednictvím jakékoli metody respektuje všechna omezení verzí, která zadáte v packages.config nebo v souboru projektu.

  • V souboru packages.config můžete zadat allowedVersions rozsah závislosti. Další informace najdete v tématu Omezení verzí upgradu. Příklad:

    <package id="Newtonsoft.json" version="6.0.4" allowedVersions="[6,7)" />
    
  • V souboru projektu můžete zadat rozsah verzí ve Version vlastnosti závislosti. Příklad:

    <PackageReference Include="Newtonsoft.json" Version="[6,7)" />
    

V oboupřípadechch

Vynucení obnovení ze vzdálených zdrojů balíčků

Ve výchozím nastavení operace obnovení NuGet používají balíčky z místních globálních balíčků a složek http-cache , jak je popsáno v tématu Správa globálních balíčků a složek mezipaměti. Pokud se chcete těmto místním balíčkům vyhnout, použijte následující možnosti.

Vymazání všech místních mezipamětí:

  • V sadě Visual Studio vyberte tlačítko Vymazat všechny mezipaměti NuGet v >nástrojích Možnosti>NuGet Správce balíčků> General.
  • V rozhraní příkazového řádku dotnet použijte dotnet nuget locals all --clear.
  • V rozhraní příkazového řádku NuGet použijte nuget locals all -clear.

Abyste se vyhnuli používání balíčků ve složce global-packages :

  • Vymažte složku pomocí nuget locals global-packages -clear nebo dotnet nuget locals global-packages --clear.
  • Dočasně nastavte proměnnou prostředí NUGET_PACKAGES na jinou složku.
  • Vytvořte soubor NuGet.Config , který nastaví globalPackagesFolder soubor packages.config PackageReferencenebo repositoryPathpackages.config do jiné složky. Další informace najdete v tématu Nastavení konfigurace.
  • Pouze pro NÁSTROJ MSBuild zadejte jinou složku s RestorePackagesPath vlastností.

Abyste se vyhnuli používání balíčků v mezipaměti HTTP:

  • Vymažte mezipaměť pomocí nebo nuget locals http-cache -cleardotnet nuget locals http-cache --clear.
  • Dočasně nastavte proměnnou prostředí NUGET_HTTP_CACHE_PATH na jinou složku.
  • Pro nuget restorepoužití -NoHttpCache možnosti nebo pro dotnet restoretuto možnost použijte --no-http-cache . Tyto možnosti nemají vliv na operace obnovení prostřednictvím sady Visual Studio Správce balíčků nebo konzoly.

Migrace na automatické obnovení balíčku

Starší verze NuGetu podporovaly obnovení integrovaného balíčku MSBuild. Projekty, které používají zastaralé obnovení integrovaného balíčku MSBuild, by se měly migrovat na automatické obnovení balíčku.

Tyto projekty obvykle obsahují složku .nuget se třemi soubory: NuGet.config, nuget.exe a NuGet.targets. Soubor NuGet.targets způsobí, že NuGet použije integrovaný přístup MSBuild, takže se musí odebrat.

Migrace na automatické obnovení balíčku:

  1. Povolte automatické obnovení balíčku.
  2. Zavřete Visual Studio.
  3. Odstraňte .nuget/nuget.exe a .nuget/NuGet.targets.
  4. Pro každý soubor projektu odeberte <RestorePackages> prvek a odeberte všechny odkazy na NuGet.targets.

Postup otestování automatického obnovení balíčku:

  1. Odeberte složku balíčků z řešení.
  2. Otevřete řešení v sadě Visual Studio a spusťte sestavení. Automatické obnovení balíčku by mělo stáhnout a nainstalovat každý balíček závislostí, aniž byste ho přidali do správy zdrojového kódu.

Další kroky