Arquivo de ativos project.assets.json não encontrado. Executar uma restauração do pacote NuGet

261

Estou tentando usar o nopCommerce (que está escrito no .NET Core), mas quando quero executar o projeto, enfrento 52 erros dizendo-me Executar uma restauração de pacote nuget

Arquivo de ativos ~ \ obj \ project. assets.json ' não encontrado. Execute uma restauração do pacote NuGet para gerar esse arquivo. Nop.Web.MVC.Testsote

quando uso o botão direito do mouse na solução e selecionando Restaurar Pacotes de Nuget, recebo esta mensagem:

Todos os pacotes já estão instalados e não há nada para restaurar.

mas esses 52 erros ainda estão lá e em Ferramentas -> Gerenciador de Pacotes NuGet -> Gerenciar pacotes NuGet para solução, não há nada instalado na solução, também atualizei recentemente meu VS2017 para 15.5.4

Nunca confie
fonte
Você deu o consentimento ao NuGet para restaurar? Vá para ferramentas, opções, pesquise NuGet e marque a opção "Permitir NuGet ...".
PIM
Se alguém estiver em um Mac, tivemos esse problema e o corrigimos removendo espaços no caminho do repositório (criado durante o pull do git): Meu% 20Project se torna MyProject.
David Hague

Respostas:

456

Para corrigir esse erro em Ferramentas> Gerenciador de Pacotes NuGet> Console do Gerenciador de Pacotes, execute:

dotnet restore

O erro ocorre porque o dotnet cli não cria todos os arquivos necessários inicialmente. Fazer a restauração do dotnet adiciona os arquivos necessários.

Mostafa Bouzari
fonte
21
Essa também foi a correção para o servidor de construção. Adicionada uma etapa da linha de comando para executar a "restauração do dotnet" após a restauração normal do NuGet.
Mark
24
Você pode fazer isso no MSBuild também: msbuild MySolution.sln / t: Restore
Der_Meister
3
A solução da @ Der_Meister para adicionar a opção / t: Restore funcionou para mim; no entanto, tive que criar a solução duas vezes (duas etapas de compilação separadas). Primeiro com a opção / t: Restore e depois sem ela.
Michael
16
@ Michael, tente msbuild MySolution.sln / t: Restore; Build
Der_Meister
8
Se você tiver mais de um arquivo de solução, você precisa fazerdotnet restore solutionfilename.sln
ECH
97

No meu caso, o erro foi no repositório GIT. Tinha espaços no nome, tornando meu projeto incapaz de restaurar

Se esse for seu problema, basta renomear o repositório GIT ao clonar

git clone http://Your%20Project%20With%20Spaces newprojectname
Sebastian Castaldi
fonte
6
Pensei comigo mesmo que não poderia ser isso. Depois de tentar por mais uma hora em outras soluções propostas, finalmente tentei isso por desespero e resolveu meu problema. Droga, cara!
Stark
2
Isso corrigiu o problema que eu estava tendo, muito obrigado!
Sharbel
3
Esta resposta deve estar no início do post e não no final. Resolvido meu problema.
precisa saber é o seguinte
2
Você salvou o meu dia! Obrigado.
Mpatel 23/04/19
3
no meu caso eu só renomeado minha pasta física de Remover% 20 e substituí-lo com o espaço normal e tudo está funcionando bem
hosam hemaily
42

Caso a 'restauração do dotnet' não funcione, as seguintes etapas podem ajudar:

  1. Visual Studio >> Ferramentas >> Opções >> Nuget Manager >> Origens do Pacote
  2. Desmarcou todas as fontes de pacotes de terceiros.
  3. Reconstrua a solução.
prisan
fonte
3
Encontrei recentemente esse problema no Início rápido nº 1 do Identity server: Proteger uma API usando credenciais de cliente e a solução acima funcionou para mim.
Tharindu Jayasinghe
Obrigado! Na verdade, removi uma fonte que não era mais relevante (de outra solução) e nas fontes nuget.org e MSVS Offline Packages , cliquei no botão Atualizar . Depois disso dotnet restorefuncionou.
CPHPython
Obrigado, foi isso!
tdracz 6/09/19
33

Fechar e reabrir o Visual Studio resolveu esse problema para mim, uma vez que eu tinha certeza de que os pacotes NuGet haviam sido restaurados conforme outras respostas postadas aqui.

Conta para vencer
fonte
Não posso acreditar que isso funcionou para mim também depois de fazer dotnet restaurar e só depois
Gaspa79
Eu tive alguns problemas de conectividade separados na LAN do meu trabalho que eram inibidores para o NuGet. A reinicialização do meu PC resolveu o problema!
Neo
Esta não é realmente uma resposta, porque às vezes você usar ferramentas CLI para gete builde você não faz VS. aberta Eu sei por que ele funciona com o VS - porque o VS resolve automaticamente as dependências do projeto.
TS
@TS, a pergunta está marcada com "Visual Studio 2017", então eu diria que esta é uma resposta. Você levanta um ponto interessante, porém, de que o problema está no VS resolver dependências. Se você tiver mais alguma informação sobre o que está acontecendo de errado, eu tenho certeza que seria uma leitura interessante:)
OutstandingBill
+1. Você me pegou! Com o VS, tudo bem. Sua versão 15.5 era de buggy. Eu acho que 15.5 / 15.6 teve uma série de questões para a resolução de referência. Agora, aqui está a resposta stackoverflow.com/a/58548856/1704458
TS
20

Para aqueles com o mesmo problema que eu no ambiente Azure DevOps / VSTS que encontram uma mensagem semelhante: C:\Program Files\dotnet\sdk\2.2.104\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(208,5): Error NETSDK1004: Assets file '...\obj\project.assets.json' not found. Run a NuGet package restore to generate this file

Adicione /t:Restoreaos seus argumentos do MSBuild no Build Solution.

taylorswiftfan
fonte
9

Para mim, quando eu fiz - dotnet restore ainda estava ocorrendo um erro.

eu fui para

1 Ferramenta -> Gerenciador de Pacotes NuGet -> Configurações do Gerenciador de Pacotes -> clique em "Limpar nas Catche Nuget (s)"

2 restauração dotnet

problemas resolvidos.

Rapidez
fonte
Vou tentar isso da próxima vez que acontecer. Poderia ser uma abordagem melhor do que a minha (fechar e reabrir o VS), que normalmente leva anos para mim.
OutstandingBill
6

No visual studio 2017, execute as seguintes etapas:

1) selecione Ferramenta => Opções => Gerenciador de Pacotes NuGet => Origens do pacote e desmarque a opção Pacotes Microsoft Visual Studio Offline . insira a descrição da imagem aqui

2) agora abra Ferramenta => NuGet Package Maneger => Console do Gerenciador de Pacotes. 3) execute o comando em PM> dotnet restore.

Espero que esteja funcionando ...

Manoj Gupta
fonte
6

Para mim, atualizei o NuGet.exe de 3,4 para 4,9, pois o 3,4 não entende como restaurar pacotes para o .NET Core.

Para obter detalhes, consulte dotnet restore vs. nuget restore com teamcity

user8128167
fonte
Sim - encontrei isso quando começamos a migrar projetos antigos do .Net Framework para o novo .csprojformato de projeto.
StuartLC
5

Selecione Ferramentas > Gerenciador de Pacotes NuGet > Console do Gerenciador de Pacotes

E depois execute:

dotnet restore <project or solution name>
Andre Mesquita
fonte
3

Um pouco tarde para a resposta, mas parece que isso agregará valor. Olhando para o erro - parece ocorrer no pipeline de CI / CD.

Basta executar "dotnet build" será suficiente.

compilação dotnet

A dotnet build executa a "restauração" por padrão.

Sunny Sharma
fonte
1
Também pode ser alcançado adicionando a etapa ".NET core" ao pipeline (antes da compilação) e selecionando o comando "dotnet restore" no menu suspenso. Estou falando especificamente sobre o pipeline do VSTS aqui.
Lech Osiński
3

Nada acima funcionou para mim. Mas simplesmente excluir todas as pastas 'bin' e 'obj' funcionou.

alexbk66
fonte
Esse problema aconteceu comigo quando trabalhei em um Dockerfile. excluir essas pastas fez com que a restauração do dotnet no contêiner funcionasse corretamente.
Johannes
3

Resolvido adicionando / t: Restore; Build to MSBuild Arguments

Abdulsamet İLERİ
fonte
2

Ao usar o VSTS, verifique seu arquivo global.json. Eu havia entrado na versão sdk como apenas "2.2", o que causou um erro de análise (mas não ao criar localmente). Adicionando a versão completa, "2.2.104" resolveu o problema.

Rob Minnis
fonte
2

Perdi várias horas com esse erro no Azure DevOps quando defino a tarefa 'Visual Studio Build' em um pipeline de compilação para criar um projeto individual em minha solução, em vez de toda a solução.

Fazer isso significa que o DevOps não cria nenhum (ou possivelmente alguns, não tenho certeza qual) dos projetos referenciados pelo projeto que você direcionou para a compilação e, portanto, esses projetos não terão o projeto deles. arquivos .asset gerados, o que causa esse problema.

A solução para mim foi trocar o uso da tarefa VS Build pela tarefa MSBuild. O uso da tarefa MSBuild para um projeto individual cria corretamente todos os projetos referenciados pelo projeto que você está criando e elimina esse erro.

tomRedox
fonte
1

Se simplesmente restaurar pacotes NuGet não funcionar, verifique em Ferramentas -> Opções -> Gerenciador de Pacotes NuGet -> Geral em Restauração de Pacotes que a opção "Permitir que o NuGet baixe pacotes ausentes" está marcada.

Em seguida, restaure os pacotes NuGet novamente OU apenas recompense após excluir as pastas obj e bin.

NexX
fonte
1

Se a sugestão @ mostafa-bouzari não ajudar, verifique cuidadosamente nas janelas 'Lista de erros' ou 'Saída' se há erros nos motivos pelos quais o NuGet não pode restaurar, por exemplo, devido a um problema de rede se você estiver atrás de proxy.

flam3
fonte
No meu caso, o Nuget Restore não pôde se conectar ao nosso repositório privado do NuGet, porque eu não estava conectado à VPN da empresa. A verificação dos logs do console do gerenciador de pacotes ajudou.
Alexander Puchkov
1

Esse problema ocorre quando sua ferramenta de construção não está configurada para restoreprojetos em uso PackageReferencevs packages.confige afeta principalmente projetos de estilo novo do Net Core e Netstandard.

Quando você abre o Visual Studio e cria, ele resolve isso para você. Mas se você usar automação, ferramentas da CLI, verá esse problema.

Muitas soluções são oferecidas aqui. Mas tudo o que você precisa se lembrar, é preciso forçar restore. Em alguns casos, você usa dotnet restoreantes da compilação. Se você criar usando o MsBuild, basta adicionar a /t:Restoreopção ao seu comando.

Resumindo, você precisa ver por que a restauração não pode ser ativada. Fonte de nuget incorreta ou ação de restauração ausente ou nuget.exe desatualizado ou todas as opções acima.

TS
fonte
1

Experiência muito estranha que encontrei!

Eu havia clonado com o GIT bash e o GIT cmd-Line anteriormente, encontrei os problemas acima.

Mais tarde, eu clonei com o Tortoise-GIT e tudo funcionou como esperado.

Pode ser uma resposta louca, mas tentar com isso uma vez pode economizar seu tempo!

Bikram
fonte
1

Visto isso depois de adicionar um projeto WinForms Core 3.1 (de modelos de projeto) no VS-2019 vs 16.4.0 e tentar executá-lo imediatamente. Limpar ou reconstruir toda a solução não funcionou.

Acabei de recarregar minha solução ... ou seja, File / Close Solution e, em seguida, reabri-la e reconstruí-la resolvemos o problema.

Guloseimas
fonte
1

Se esse erro ocorrer como parte de uma compilação no Azure DevOps (TFS) e sua compilação já tiver uma tarefa de restauração do NuGet , esse erro poderá indicar que a tarefa de restauração do NuGet não conseguiu restaurar todos os pacotes, especialmente se você usar uma fonte de pacote personalizada ( como um servidor NuGet interno). Adicionar /t:Restore;Buildaos argumentos do MSBuild parece ser uma maneira de resolver o erro, mas isso solicita que o MSBuild execute uma operação de restauração adicional do NuGet. Acredito que isso tenha êxito porque o MSBuild usa a fonte de pacote personalizada configurada no Visual Studio. Uma solução preferível é corrigir a tarefa de restauração do NuGet.

Para configurar uma fonte de pacote personalizada para a tarefa de restauração do NuGet:

  1. Crie um NuGet.configarquivo que lista todas as fontes de pacote (Pacotes Off-line do Microsoft Visual Studio, nuget.org e sua fonte de pacote personalizada) e adicione-o ao controle de origem.
  2. Na tarefa de restauração do Nuget em Feeds a ser usada: selecione a opção Feeds no meu NuGet.config .
  3. Forneça o caminho para NuGet.config.
  4. Remova a /t:Restore;Buildopção da tarefa MSBuild.

Informações adicionais estão disponíveis aqui .

Jeremiah Mercier
fonte
0

Recebi o erro quando criei um lambda no dot net core no VS2017. O que funcionou para mim foi descarregar o projeto e carregá-lo de volta.

boms
fonte
0

execute seu VS como administrador depois disso no console do gerenciador de pacotes, execute a restauração do dotnet.

Lucas Brito
fonte
0

Outro, se por acaso você estiver usando o Dropbox, verifique Conflictedos nomes dos arquivos, faça uma pesquisa em seu repositório e exclua todos os arquivos em conflito.

Isso pode ter acontecido se você moveu os arquivos.

Jose A
fonte
0

Causa deste defeito: você deve remover o Nuget injetado no gerenciador de arquivos. Solução: Depois de remover esse Nuget no seu sistema, remova-o do seguinte local. selecione Ferramenta => Opções => Gerenciador de Pacotes NuGet => Origens do pacote e desmarque a opção Pacotes Microsoft Visual Studio Offline

balaji s
fonte
0

No meu caso, tive um problema com as fontes de pacotes disponíveis. Movi a pasta do repositório local do nuget para um novo caminho, mas não a atualizei nas Fontes de Pacotes Disponíveis do Nuget. Quando eu corrigir o problema do caminho, atualize-o nas Fontes de Pacotes Disponíveis e depois disso tudo (restauração de pepitas, etc.) estava funcionando bem.

user11990436
fonte
0

Para mim, acabou sendo um problema de credenciais de fonte de pepita. Eu havia mudado recentemente minha senha para acessar um servidor nexus e o visual studio ainda estava usando a senha antiga ao tentar acessar uma pepita nesse servidor por meio do gerenciador de credenciais do Windows. Para corrigi-lo, tive que excluir a entrada dessas credenciais desatualizadas no gerenciador de credenciais e, depois que, ao fazer uma restauração de nuget, solicitava uma senha, permitindo que eu inserisse a nova senha, que foi salva novamente no gerenciador de credenciais. Você pode acessar o gerenciador de credenciais na linha cmd usando CmdKey.exe.

John Volkya
fonte
0

Tente isso (funcionou para mim):

  • Execute o VS como administrador
  • Atualização manual do NuGet para a versão mais recente
  • Exclua todos os arquivos bin e obj no projeto.
  • Reiniciar o VS
  • Recompilar
dalfonsop
fonte
0

Você pode acessar: Ferramentas> Gerenciador de Pacotes NuGet> Console do Gerenciador de Pacotes

E depois execute:

restauração dotnet

Sete
fonte