Solução de problemas de erros de restauração de pacote
Este artigo aborda os erros comuns ao restaurar pacotes e as etapas para resolvê-los.
A Restauração de Pacote tenta instalar todas as dependências de pacotes no estado correto correspondente às referências de pacote do arquivo de projeto (.csproj) ou do arquivo packages.config. (Em Visual Studio, as referências aparecem em Gerenciador de Soluções nas Dependências \ NuGet ou no nó Referências.) Para seguir as etapas necessárias para restaurar pacotes, consulte Restaurar pacotes. Se as referências de pacote no arquivo de projeto (.csproj) ou no arquivo packages.config estiverem incorretas (não corresponderem ao estado desejado após a Restauração de Pacote), instale ou atualize os pacotes em vez de usar a Restauração de Pacote.
Se estas instruções não funcionarem para você, envie um problema no GitHub para examinarmos o cenário mais cuidadosamente. Não use o controle "Esta página é útil?" que pode aparecer nesta página porque ele não nos dá a capacidade de entrar em contato com você para obter mais informações.
Solução rápida para usuários do Visual Studio
Se você estiver usando o Visual Studio, primeiro habilite a restauração de pacote da maneira descrita a seguir. Caso contrário, prossiga para as seções seguintes.
- Selecione o comando de menu ferramentas > NuGet Gerenciador de Pacotes > Gerenciador de Pacotes Configurações.
- Marque as duas opções em Restauração de Pacote.
- Selecione OK.
- Compile o projeto novamente.
Essas configurações também podem ser alteradas no arquivo NuGet.Config
; veja a seção de consentimento. Se seu projeto for um projeto mais antigo que usa a restauração de pacote integrada ao MSBuild, talvez seja necessário migrar para a restauração automática de pacote.
Este projeto faz referência a pacotes NuGet ausentes neste computador
Mensagem de erro completa:
This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.
Esse erro ocorre ao tentar compilar um projeto com referências a um ou mais pacotes do NuGet, mas, no momento, esses pacotes não estão instalados no computador ou no projeto.
- Ao usar o formato de gerenciamento PackageReference , esse erro pode ser uma sobra de uma migração de packages.config para PackageReference e precisa ser removido manualmente do arquivo de projeto.
- Ao usar o packages.config, o erro significa que o pacote não está instalado na pasta
packages
na raiz da solução.
Essa situação geralmente ocorre ao obter o código-fonte do projeto por meio do controle do código-fonte ou de outro download. Os pacotes normalmente são omitidos do controle do código-fonte ou dos downloads, uma vez que podem ser restaurados de feeds de pacotes, como o nuget.org (veja Pacotes e controle do código-fonte). Por outro lado, a inclusão deles sobrecarregaria o repositório ou criaria arquivos .zip desnecessariamente grandes.
O erro também poderá ocorrer se o arquivo de projeto contiver caminhos absolutos para locais de pacote e você mover o projeto.
Use um dos seguintes métodos para restaurar os pacotes:
- Se você moveu o arquivo de projeto, edite o arquivo diretamente para atualizar as referências do pacote.
- Visual Studio (restauração automática ou restauração manual)
- CLI do dotnet
- CLI do nuget.exe
- MSBuild
- Azure Pipelines
- Azure DevOps Server
Após uma restauração bem-sucedida, o pacote deve estar presente na pasta global-packages. Em caso de projetos que usam PackageReference, uma restauração deve recriar o arquivo obj/project.assets.json
; em projetos que usam packages.config
, o pacote deve aparecer na pasta packages
do projeto. Nesse momento, o projeto deverá ser compilado com êxito. Caso contrário, envie um problema no GitHub para que possamos acompanhá-lo com você.
Arquivo de ativos project.assets.json não encontrado
Mensagem de erro completa:
Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.
O arquivo project.assets.json
mantém um grafo de dependência do projeto quando ocorre o uso do formato de gerenciamento PackageReference, que é usado para garantir que todos os pacotes necessários sejam instalados no computador. Como esse arquivo é gerado de modo dinâmico por meio da restauração do pacote, ele geralmente não é adicionado ao controle do código-fonte. Como resultado, esse erro ocorre ao compilar um projeto com uma ferramenta como o msbuild
, que não restaura os pacotes automaticamente.
Nesse caso, execute msbuild -t:restore
seguido por msbuild
ou use dotnet build
(que restaura automaticamente os pacotes). Também é possível usar algum dos métodos de restauração de pacote descritos na seção anterior.
Um ou mais pacotes NuGet precisam ser restaurados, mas não foi possível porque o consentimento não foi concedido
Mensagem de erro completa:
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}
Esse erro indica que a restauração de pacote está desabilitada na configuração do NuGet.
Você pode alterar as configurações aplicáveis no Visual Studio, conforme descrito anteriormente em Solução rápida para usuários do Visual Studio.
Você também pode editar essas configurações diretamente no arquivo nuget.config
aplicável (normalmente %AppData%\NuGet\NuGet.Config
no Windows e ~/.nuget/NuGet/NuGet.Config
no Linux/Mac). Verifique se as chaves enabled
e automatic
em packageRestore
estão definidas como True:
<!-- Package restore is enabled -->
<configuration>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
</configuration>
Importante
Se você editar as configurações de packageRestore
diretamente em nuget.config
, reinicie o Visual Studio para que a caixa de diálogo de opções mostre os valores atuais.
Outras condições possíveis
Você pode encontrar erros de build devido a arquivos ausentes, com uma mensagem indicando para usar a restauração do NuGet para baixá-los. No entanto, executar uma restauração pode dizer: "Todos os pacotes já estão instalados e não há nada para restaurar" Nesse caso, exclua a
packages
pasta (ao usarpackages.config
) ou oobj/project.assets.json
arquivo (ao usar PackageReference) e execute a restauração novamente. Se o erro continuar, usenuget locals all -clear
oudotnet nuget locals all --clear
pela linha de comando para limpar as pastas global-packages e de cache, conforme descrito em Como gerenciar as pastas de pacotes globais e de cache.Ao obter um projeto por meio do controle do código-fonte, as pastas do projeto poderão ser definidas como somente leitura. Altere as permissões de pasta e tente restaurar os pacotes novamente.
Talvez você esteja usando uma versão antiga do NuGet. Acesse nuget.org/downloads para obter as versões mais recentes recomendadas. Para o Visual Studio 2015, recomendamos a versão 3.6.0.
Se você encontrar outros problemas, envie um problema no GitHub para que possamos obter mais detalhes.