Sdílet prostřednictvím


Řešení potíží s chybami obnovení balíčku

Tento článek se zaměřuje na běžné chyby při obnovování balíčků a postupu jejich řešení.

Obnovení balíčku se pokusí nainstalovat všechny závislosti balíčků do správného stavu, který odpovídá odkazům na balíčky v souboru projektu (.csproj) nebo souboru packages.config . (V Visual Studio se odkazy zobrazují v Průzkumník řešení pod uzlem Závislosti \ NuGet nebo Odkazy.) Pokud chcete postupovat podle požadovaných kroků k obnovení balíčků, přečtěte si téma Obnovení balíčků. Pokud jsou odkazy na balíčky v souboru projektu (.csproj) nebo váš soubor packages.config nesprávné (neodpovídají požadovanému stavu po obnovení balíčku), je potřeba nainstalovat nebo aktualizovat balíčky místo použití obnovení balíčku.

Pokud zde uvedené pokyny nefungují, zapište prosím problém na GitHub, abychom mohli pečlivě prozkoumat váš scénář. Nepoužívejte ovládací prvek "Je tato stránka užitečná?", který se může zobrazit na této stránce, protože nám neumožňuje kontaktovat vás o další informace.

Rychlé řešení pro Visual Studio uživatele

Pokud používáte Visual Studio, nejprve povolte obnovení balíčku následujícím způsobem. V opačném případě pokračujte k následujícím oddílům.

  1. Vyberte příkaz nabídky Nástroje > NuGet Správce balíčků Správce balíčků Nastavení>.
  2. Nastavte obě možnosti v části Obnovení balíčku.
  3. Vyberte OK.
  4. Znovu sestavte projekt.

Enable NuGet package restore in Tool/Options

Tato nastavení se dají změnit také ve vašem NuGet.Config souboru. Přečtěte si část o souhlasu . Pokud je projekt starším projektem, který používá obnovení balíčku integrovaného MSBuild, možná budete muset provést migraci na automatické obnovení balíčku.

Tento projekt odkazuje na balíčky NuGet, které v tomto počítači chybí.

Úplná chybová zpráva:

This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.

K této chybě dochází při pokusu o sestavení projektu, který obsahuje odkazy na jeden nebo více balíčků NuGet, ale tyto balíčky nejsou momentálně nainstalovány v počítači nebo v projektu.

  • Při použití formátu správy PackageReference může být tato chyba levým přechodem z packages.config na migraci PackageReference a je nutné ji ručně odebrat ze souboru projektu.
  • Při použití packages.configtato chyba znamená, že balíček není nainstalován ve packages složce v kořenovém adresáři řešení.

K této situaci obvykle dochází, když získáte zdrojový kód projektu ze správy zdrojového kódu nebo jiného stažení. Balíčky jsou obvykle vynechány ze správy zdrojového kódu nebo stahování, protože je můžete obnovit z informačních kanálů balíčků, jako je nuget.org (viz Balíčky a správa zdrojového kódu). Když je zahrnete, jinak by úložiště zamíchali nebo zbytečně vytvářeli velké soubory .zip.

K této chybě může dojít také v případě, že soubor projektu obsahuje absolutní cesty k umístění balíčků a projekt přesunete.

K obnovení balíčků použijte jednu z následujících metod:

Po úspěšném obnovení by měl být balíček k dispozici ve složce global-packages . V případě projektů používajících PackageReference by se měl obnovit soubor znovu obj/project.assets.json . Pro projekty používající packages.configby se balíček měl zobrazit ve složce projektu packages . Projekt by se teď měl úspěšně sestavit. Pokud ne, vytvořte problém s GitHub, abychom vás mohli zpracovat.

Soubor Assets project.assets.json nebyl nalezen.

Úplná chybová zpráva:

Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.

Soubor project.assets.json udržuje graf závislostí projektu při použití formátu správy PackageReference, který slouží k zajištění, že jsou na počítači nainstalovány všechny potřebné balíčky. Protože se tento soubor generuje dynamicky prostřednictvím obnovení balíčku, obvykle se nepřidá do správy zdrojového kódu. V důsledku toho k této chybě dochází při vytváření projektu pomocí nástroje, jako msbuild je například to, že se balíčky automaticky neobnoví.

V takovém případě spusťte následující příkaz msbuild -t:restoremsbuildnebo použijte dotnet build (který automaticky obnoví balíčky). Můžete také použít některou z metod obnovení balíčku v předchozí části.

Úplná chybová zpráva:

One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}

Tato chyba značí, že obnovení balíčku je v konfiguraci NuGet zakázané.

V Visual Studio můžete změnit příslušná nastavení, jak je popsáno výše v části Rychlé řešení pro Visual Studio uživatele.

Tato nastavení můžete také upravit přímo v příslušném nuget.config souboru (obvykle %AppData%\NuGet\NuGet.Config na Windows a ~/.nuget/NuGet/NuGet.Config v Mac/Linuxu). Ujistěte se, že enabled jsou klíče a automatic klíče packageRestore nastavené na Hodnotu True:

<!-- Package restore is enabled -->
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

Důležité

Pokud upravíte packageRestore nastavení přímo v nuget.config, restartujte Visual Studio tak, aby dialogové okno možnosti zobrazovaly aktuální hodnoty.

Další potenciální podmínky

  • K chybám sestavení může dojít kvůli chybějícím souborům se zprávou o tom, že k jejich stažení použijete NuGet obnovení. Spuštění obnovení ale může hlásit: "Všechny balíčky jsou už nainstalované a není nic k obnovení.". V takovém případě odstraňte packages složku (při použití packages.config) nebo obj/project.assets.json soubor (při použití PackageReference) a spusťte obnovení znovu. Pokud chyba přetrvává, pomocí nuget locals all -clear příkazového řádku nebo dotnet nuget locals all --clear z příkazového řádku vymažte složky globálních balíčků a mezipaměti, jak je popsáno v tématu Správa globálních balíčků a složek mezipaměti.

  • Při získávání projektu ze správy zdrojového kódu mohou být složky projektu nastaveny na jen pro čtení. Změňte oprávnění ke složce a zkuste obnovit balíčky znovu.

  • Možná používáte starou verzi NuGet. Zkontrolujte nuget.org/downloads nejnovější doporučené verze. Pro Visual Studio 2015 doporučujeme 3.6.0.

Pokud narazíte na jiné problémy, vytvořte problém s GitHub, abychom vám mohli získat další podrobnosti.