Fichier d'actifs project.assets.json introuvable. Exécutez une restauration de package NuGet

261

J'essaie d'utiliser nopCommerce (qui est écrit en .NET Core) mais lorsque je veux exécuter le projet, je fais face à 52 erreurs me disant Exécuter une restauration de package nuget

Fichier d'actifs ~ \ obj \ project. assets.json ' introuvable. Exécutez une restauration de package NuGet pour générer ce fichier. Nop.Web.MVC.Testsote

lorsque j'utilise le clic droit sur la solution et en sélectionnant Restaurer les packages Nuget, je reçois ce message:

Tous les packages sont déjà installés et il n'y a rien à restaurer.

mais ces 52 erreurs sont toujours là et dans Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution il n'y a rien installé sur la solution, aussi j'ai récemment mis à jour mon VS2017 vers 15.5.4

Ne jamais faire confiance
la source
Avez-vous donné votre accord à NuGet pour effectuer la restauration? Allez dans les outils, les options, recherchez NuGet et cochez l'option "Autoriser NuGet ...".
imps
Si quelqu'un se trouve sur un Mac, nous avons eu ce problème et l'avons résolu en supprimant les espaces dans le chemin du référentiel (qui a été créé lors de l'extraction git): Mon% 20Project devient MyProject.
David Hague

Réponses:

459

Pour corriger cette erreur dans Outils> Gestionnaire de packages NuGet> Console du gestionnaire de packages, exécutez simplement:

dotnet restore

L'erreur se produit car le dotnet cli ne crée pas initialement tous les fichiers requis. La restauration dotnet ajoute les fichiers requis.

Mostafa Bouzari
la source
21
C'était aussi le correctif pour le serveur de build. Ajout d'une étape de ligne de commande pour exécuter la «restauration dotnet» après une restauration NuGet normale.
Mark
24
Vous pouvez également le faire à partir de MSBuild: msbuild MySolution.sln / t: Restore
Der_Meister
3
La solution de @ Der_Meister pour ajouter l'option / t: Restore a fonctionné pour moi, cependant, j'ai dû construire la solution deux fois (deux étapes de construction distinctes). D'abord avec l'option / t: Restore et ensuite sans elle.
Michael
16
@Michael, essayez msbuild MySolution.sln / t: Restore; Build
Der_Meister
8
Si vous avez plus d'un fichier de solution, vous devez le fairedotnet restore solutionfilename.sln
ECH
97

Dans mon cas, l'erreur était le référentiel GIT. Il y avait des espaces dans le nom, rendant mon projet incapable de restaurer

Si c'est votre problème, renommez simplement le référentiel GIT lorsque vous clonez

git clone http://Your%20Project%20With%20Spaces newprojectname
Sebastian Castaldi
la source
6
Je me suis dit que ça ne pouvait pas être ça. Après avoir essayé pendant une heure sur d'autres solutions proposées, j'ai finalement essayé cela par désespoir et cela a résolu mon problème. Bon sang!
Stark
2
Cela a résolu le problème que j'avais, merci beaucoup!
Sharbel
3
Cette réponse doit être au début du post et non à la fin. Résolu mon problème.
CodeWarrior
2
Tu m'as sauvé la journée! Je vous remercie.
mpatel
3
dans mon cas, je viens de renommer mon dossier physique en supprimant% 20 et en le remplaçant par un espace normal et tout fonctionne bien
hosam hemaily
42

Dans le cas où la «restauration dotnet» ne fonctionne pas, les étapes suivantes peuvent aider:

  1. Visual Studio >> Outils >> Options >> Nuget Manager >> Sources de packages
  2. Décoché toutes les sources de packages tiers.
  3. Reconstruisez la solution.
prisan
la source
3
J'ai récemment rencontré ce problème pour Quickstart # 1 du serveur d'identité: la sécurisation d'une API à l'aide des informations d'identification client et la solution ci-dessus a fonctionné pour moi.
Tharindu Jayasinghe
Je vous remercie! J'ai en fait supprimé une source qui n'était plus pertinente (d'une autre solution) et sur les sources de packages hors ligne nuget.org et MSVS , j'ai cliqué sur le bouton Mettre à jour . Après cela a dotnet restorefonctionné.
CPHPython
Merci, c'était tout!
tdracz
33

La fermeture et la réouverture de Visual Studio ont résolu ce problème pour moi, une fois que je m'étais assuré que les packages NuGet avaient été restaurés conformément aux autres réponses publiées ici.

OutstandingBill
la source
Je ne peux pas croire que cela ait fonctionné pour moi aussi après avoir fait la restauration dotnet et seulement après cela
Gaspa79
J'ai eu des problèmes de connectivité distincts sur mon LAN de travail qui étaient inhibiteurs pour NuGet. Le redémarrage de mon PC a résolu le problème!
Neo
Ce n'est vraiment pas une réponse car parfois vous utilisez des outils CLI pour getet buildet vous n'ouvrez pas VS. Je sais pourquoi cela fonctionne avec VS - parce que VS résout automatiquement les dépendances du projet.
TS
@TS, la question est étiquetée "Visual Studio 2017", donc je dirais que c'est une réponse. Vous soulevez cependant un point intéressant, à savoir que le problème réside dans la résolution des dépendances VS. Si vous avez plus d'informations sur ce qui ne va pas, je suis sûr que cela rendrait la lecture intéressante:)
OutstandingBill
+1. Tu m'as eu! Avec VS, eh bien. Sa version 15.5 était boguée. Je pense que 15.5 / 15.6 avait une foule de problèmes pour la résolution de référence. Maintenant, voici la réponse stackoverflow.com/a/58548856/1704458
TS
20

Pour ceux qui ont le même problème que moi dans l'environnement Azure DevOps / VSTS rencontrant un message similaire: 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

Ajoutez /t:Restoreà vos arguments MSBuild dans Build Solution.

taylorswiftfan
la source
9

Pour moi, quand je l'ai fait - une erreur de restauration dotnet était toujours en cours.

je suis allé à

1 outil -> NuGet Package Maneger -> Paramètres du gestionnaire de packages -> cliquez sur "Effacer les captures Nuget"

2 restauration dotnet

problèmes résolus.

La vitesse
la source
Je vais essayer ça la prochaine fois que ça arrivera. Cela pourrait être une meilleure approche que la mienne (fermer et rouvrir VS) qui prend généralement des âges pour moi.
OutstandingBill
6

Dans Visual Studio 2017, veuillez suivre les étapes suivantes:

1) sélectionnez Tool => Options => NuGet Package Manager => Package Sources puis décochez l'option Microsoft Visual Studio Offline Packages . entrez la description de l'image ici

2) ouvrez maintenant Tool => NuGet Package Maneger => Package Manager Console. 3) exécuter la commande dans PM> dotnet restore.

J'espère que ça marche ...

Manoj Gupta
la source
6

Pour moi, j'ai mis à niveau NuGet.exe de 3.4 à 4.9 car 3.4 ne comprend pas comment restaurer des packages pour .NET Core.

Pour plus de détails, veuillez consulter la restauration dotnet contre la restauration nuget avec teamcity

user8128167
la source
Oui - je l'ai trouvé lorsque nous avons commencé à migrer d'anciens projets .Net Framework vers le nouveau .csprojformat de projet.
StuartLC
5

Sélectionnez Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages

Et puis exécutez:

dotnet restore <project or solution name>
Andre Mesquita
la source
3

un peu tard pour la réponse mais semble que cela va ajouter de la valeur. En regardant l'erreur - elle semble se produire dans le pipeline CI / CD.

L'exécution de "dotnet build" sera suffisante.

construction dotnet

La construction dotnet exécute la "restauration" par défaut.

Sunny Sharma
la source
1
Vous pouvez également y parvenir en ajoutant l'étape ".NET core" au pipeline (avant la génération), et en sélectionnant la commande "dotnet restore" dans la liste déroulante. Je parle spécifiquement du pipeline VSTS ici.
Lech Osiński
3

Rien au-dessus n'a fonctionné pour moi. Mais la suppression de tous les dossiers «bin» et «obj» a fait l'affaire.

alexbk66
la source
Ce problème est arrivé pour moi lorsque j'ai travaillé sur un Dockerfile. la suppression de ces dossiers a fait fonctionner correctement la restauration dotnet dans le conteneur.
Johannes
3

Résolu en ajoutant / t: Restore; Build to MSBuild Arguments

Abdulsamet İLERİ
la source
2

Lorsque vous utilisez VSTS, vérifiez votre fichier global.json. J'avais entré la version sdk en tant que "2.2", ce qui a provoqué une erreur d'analyse (mais pas lors de la construction locale). L'ajout de la version complète, "2.2.104" a résolu le problème.

Rob Minnis
la source
2

J'ai perdu plusieurs heures sur cette erreur dans Azure DevOps lorsque j'ai défini la tâche 'Visual Studio Build' dans un pipeline de génération pour créer un projet individuel dans ma solution, plutôt que la solution entière.

Cela signifie que DevOps ne génère aucun (ou peut-être certains, je ne sais pas lequel) des projets référencés par le projet que vous avez ciblé pour la génération, et donc ces projets n'auront pas leur projet.json Les fichiers .asset générés, ce qui provoque ensuite ce problème.

La solution pour moi était de passer de l'utilisation de la tâche VS Build à la tâche MSBuild. L'utilisation de la tâche MSBuild pour un projet individuel génère correctement tous les projets référencés par le projet que vous générez et élimine cette erreur.

tomRedox
la source
2

Si cette erreur se produit dans le cadre d'une génération dans Azure DevOps (TFS) et que votre génération possède déjà une tâche de restauration NuGet , cette erreur peut indiquer que la tâche de restauration NuGet n'a pas pu restaurer tous les packages, en particulier si vous utilisez une source de package personnalisée ( comme un serveur NuGet interne). L'ajout /t:Restore;Buildaux arguments MSBuild semble être un moyen de résoudre l'erreur, mais cela demande à MSBuild d'effectuer une opération de restauration NuGet supplémentaire. Je crois que cela réussit parce que MSBuild utilise la source de package personnalisée configurée dans Visual Studio. Une solution préférable consiste à corriger la tâche de restauration NuGet.

Pour configurer une source de package personnalisé pour la tâche de restauration NuGet:

  1. Créer un NuGet.config fichier qui répertorie toutes les sources de package (packages hors ligne Microsoft Visual Studio, nuget.org et votre source de package personnalisé) et ajoutez-le au contrôle de code source.
  2. Dans la tâche de restauration Nuget sous Flux à utiliser: sélectionnez l'option Flux dans mon NuGet.config .
  3. Fournissez le chemin vers NuGet.config.
  4. Supprimez l' /t:Restore;Buildoption de la tâche MSBuild.

Des informations supplémentaires sont disponibles ici .

Jérémie Mercier
la source
1

Si la simple restauration des packages NuGet ne fonctionne pas, assurez-vous dans Outils -> Options -> Gestionnaire de packages NuGet -> Général sous Restauration de package que la case "Autoriser NuGet à télécharger les packages manquants" est cochée.

Ensuite, restaurez les packages NuGet à nouveau OU reconstruisez simplement après la suppression des dossiers obj et bin.

NexX
la source
1

Si @ mostafa-Bouzari suggestion ne l' aide, vérifiez soigneusement dans les fenêtres pour les erreurs « liste d'erreur » ou « de sortie » pourquoi NuGet ne peut pas restaurer, par exemple en raison de problème net si vous êtes derrière proxy.

flam3
la source
Dans mon cas, Nuget Restore n'a pas pu se connecter à notre référentiel privé NuGet, car je n'étais pas connecté au VPN de l'entreprise. La vérification des journaux de la console du gestionnaire de packages a aidé.
Alexander Puchkov
1

Ce problème se produit lorsque votre outil de génération n'est pas configuré pour faire restoresur des projets configurés pour utiliser PackageReferencevspackages.config et affecte principalement les projets de nouveau style Net Core et Netstandard.

Lorsque vous ouvrez Visual Studio et générez, il résout cela pour vous. Mais si vous utilisez l'automatisation, les outils CLI, vous voyez ce problème.

De nombreuses solutions sont proposées ici. Mais tout ce dont vous avez besoin de vous souvenir, vous devez forcer restore. Dans certains cas, vous utilisez dotnet restoreavant la génération. Si vous construisez en utilisant MsBuild, ajoutez simplement un /t:Restorecommutateur à votre commande.

En bout de ligne, vous devez voir pourquoi la restauration ne peut pas être activée. Soit source de nuget incorrecte ou action de restauration manquante, soit nuget.exe obsolète, ou tout ce qui précède.

TS
la source
1

Expérience très étrange que j'ai rencontrée!

J'avais cloné avec GIT bash et GIT cmd-Line plus tôt, j'ai rencontré les problèmes ci-dessus.

Plus tard, j'ai cloné avec Tortoise-GIT et tout a fonctionné comme prévu.

C'est peut-être une réponse folle, mais essayer avec cela une fois peut vous faire gagner du temps!

Bikram
la source
1

Vu après avoir ajouté un projet WinForms Core 3.1 (à partir de modèles de projet) sur VS-2019 vs 16.4.0 et essayé de l'exécuter hors de la boîte. Nettoyer ou reconstruire la solution entière n'a pas fonctionné.

Je viens de recharger ma solution .. c'est-à-dire File / Close Solution, puis de la rouvrir et de la reconstruire pour résoudre le problème.

Des goodies
la source
0

J'ai eu l'erreur lorsque j'ai créé un lambda dans le noyau dot net dans VS2017. Ce qui a fonctionné pour moi, c'est de décharger le projet et de le recharger.

boms
la source
0

exécutez votre VS en tant qu'administrateur après cela dans la console du gestionnaire de packages, exécutez la restauration dotnet.

Lucas Brito
la source
0

Un autre, si par hasard vous utilisez Dropbox, vérifiez Conflictedles noms de fichiers, effectuez une recherche dans votre référentiel et supprimez tous ces fichiers en conflit.

Cela peut se produire si vous avez déplacé les fichiers.

Jose A
la source
0

Cause de ce défaut: vous devez supprimer le Nuget injecté dans l'explorateur de fichiers. Solution: Une fois que vous avez supprimé ce Nuget dans votre système, supprimez-le de l'emplacement suivant. sélectionnez Tool => Options => NuGet Package Manager => Package Sources puis décochez l'option Microsoft Visual Studio Offline Packages

balaji s
la source
0

Dans mon cas, j'ai eu un problème avec les sources de package disponibles. J'ai dû déplacer le dossier du référentiel de nuget local vers un nouveau chemin, mais je ne l'ai pas mis à jour dans les sources de package disponibles de Nuget. Lorsque j'ai corrigé le problème de chemin d'accès, mettez-le à jour dans les sources de package disponibles et après cela, tout (restauration de nuget, etc.) fonctionnait bien.

user11990436
la source
0

Pour moi, cela s'est avéré être un problème de références de source nuget. J'avais récemment changé mon mot de passe pour accéder à un serveur Nexus et Visual Studio utilisait toujours l'ancien mot de passe lorsque j'essayais d'accéder à un nuget sur ce serveur via le gestionnaire d'informations d'identification Windows. Pour le corriger, j'ai dû supprimer l'entrée de ces informations d'identification obsolètes dans le gestionnaire d'informations d'identification et après, lorsque j'ai effectué une restauration de nuget, il m'a demandé un mot de passe me permettant d'entrer le nouveau mot de passe, qui a été enregistré à nouveau dans le gestionnaire d'informations d'identification. Vous pouvez accéder au gestionnaire d'informations d'identification à partir de la ligne cmd à l'aide de CmdKey.exe.

John Volkya
la source
0

Essayez ceci (cela a fonctionné pour moi):

  • Exécutez VS en tant qu'administrateur
  • Mise à jour manuelle de NuGet vers la version la plus récente
  • Supprimez tous les fichiers bin et obj du projet.
  • Redémarrer VS
  • Recompiler
dalfonsop
la source
0

Vous pouvez opter pour: Outils> NuGet Package Manager> Package Manager Console

Et puis exécutez:

restauration dotnet

Sept
la source