Les paquets NuGet sont manquants

J'ai cherché ce problème mais aucune des solutions n'a fonctionné. J'ai installé Visual Studio Professional 2015 et j'utilise TFS. Ma version NuGet est 3.1.6. Ce problème se produit uniquement dans mon projet c # Web API / MVC.

Je reçois l'erreur ci-dessous:

Ce projet fait référence au(x) paquet (s) NuGet (s) manquant (s) sur ce ordinateur. Utilisez NuGet Package Restore pour les télécharger. Pour plus d' informations, voir http://go.microsoft.com/fwlink/?LinkID=322105 . Le fichier manquant est .. packages Microsoft. Net. Compilers.1.0.0buildMicrosoft.Net. Compilers. props

  1. je n'ai pas .dossier nuget dans Mes solutions.
  2. j'ai un dossier packages dans la solution et quand je le supprime, il semble que NuGet reconstruise les dépendances mais le projet a toujours l'erreur ci-dessus.
  3. j'ai essayé de supprimer le projet de TFS et il ne l'a pas corrigé.
  4. avec l'erreur ci-dessus, toutes les références dans le projet en jaune signes avant-coureurs et disent qu'ils sont manquants.
  5. Lorsque j'ai vérifié le Gestionnaire de paquets NuGet pour le projet, tout ce qui est "manquant" a une coche verte à côté, y compris Microsoft.Net.Compilers.
  6. j'ai essayé d'ajouter un nouveau projet Web API/MVC et il a rencontré un problème similaire où la plupart des références telles que Owin étaient "manquantes" avec le signe d'avertissement jaune.
213
demandé sur Ques Tion 2015-08-27 19:05:25

25 réponses

J'ai eu la même erreur (manquant exactement le même paquet) aujourd'hui. J'ai également créé un projet D'API Web MVC+.

Cela s'est produit parce que j'ai déplacé les fichiers de l'application (y compris le .csproj) fichier vers un autre emplacement. J'ai mis à jour manuellement l' .fichier sln mais toutes les dépendances des paquets sont maintenant stockées (Visual Studio 2015).fichier csproj.

Modifier le .le fichier csproj et la correction du chemin relatif au dossier solution (qui contient le dossier packages) ont résolu le problème pour moi.

204
répondu Tiberiu Craciun 2015-08-30 11:43:45

J'ai résolu mon problème en supprimant ce code du fichier .csproj:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
270
répondu Dipal Kothari 2017-12-14 13:36:09

Si vous avez un autre paquet nuget manquant qui donne votre erreur lors de la construction de votre solution, utilisez la commande suivante en utilisant la Console de commandes Nuget depuis Outils > Gestionnaire de paquets Nuget > Console du Gestionnaire de paquets. Il réinstallera tous vos paquets actuels.

Update-Package –réinstaller

Méfiez-vous - cela met à jour les paquets pour l'ensemble de la solution et pas seulement le projet.

35
répondu Shyam Bhagat 2018-03-08 15:32:56

J'ai eu ce message frustrant exact. Ce qui a finalement fonctionné pour moi a été de supprimer tous les fichiers et dossiers à l'intérieur /packages et de laisser VS tout récupérer la prochaine version.

14
répondu Ryan Russon 2015-08-31 02:22:12

Tiberiu a raison. J'ai dû modifier mon .fichier csproj que les fichiers ont été déplacés et a causé ce problème

 <Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />

J'ai changé au début du fichier et en bas

<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
11
répondu Tom Stickel 2015-10-07 00:41:17

J'ai résolu ce problème en supprimant le code suivant de .fichier csproj

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
  <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />

11
répondu Mohsin Awan 2016-11-19 13:55:40

Une combinaison des 2 réponses a fonctionné pour moi. D'abord j'ai modifié le .fichier csproj pour supprimer la référence à la version 1.0.0

< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >

  ----Error---

< /Target>

Et ensuite fait

Update-Package -Reinstall

De la et cela a fonctionné.

8
répondu Prakrithi 2016-04-27 16:59:36

Il suffit d'activer la restauration du paquet NuGet. Faites un clic droit sur votre solution > choisissez "Activer la restauration du Package NuGet".

Cliquez avec le bouton droit sur votre solution > choisissez "Activer la restauration du Package NuGet"

Cela va créer le .dossier nuget avec NuGet.Fichier de configuration et correction de mon problème.

7
répondu Nicow 2017-05-09 11:09:13

J'utilise VS2012 et face à la même erreur. J'ai supprimé la balise cible suivante de la .fichier csproj et il a commencé à compiler sans erreur.

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  -- Error messages within Target Tag
</Target>
5
répondu MAK 2016-01-24 18:36:38

Pour moi, le problème était que lorsque j'ai copié la solution dans un nouveau dossier et l'ai ouverte, il manquait le dossier Nuget comme indiqué ci-dessous. J'ai copié ce dossier et tout a fonctionné. Note: ce même dossier était dans notre contrôle de source mais pas dans ce projet de solutions, il était dans un répertoire.

entrez la description de l'image ici

4
répondu John Peters 2016-09-29 13:05:46

Pour développer quelques-unes des réponses ici, oui, vous pouvez supprimer le bloc suivant de votre .fichier csproj:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

Et cela résout le problème, mais dans mon cas, j'ai remarqué que j'avais des références supplémentaires aux compilateurs.NET. et .CodeDom.Fournisseurs avec différentes versions:

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\

<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\

Quand mes paquets.config n'a référencé que les éléments suivants:

<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"

Suppression des éléments 1.0.0 du.fichier csproj a corrigé le problème.

4
répondu Brian Vander Plaats 2017-03-27 11:49:28

Pour tous ceux qui trébuchent ici avec le problème que j'avais (certains paquets mais pas tous en cours de restauration sur un serveur de construction), la dernière pièce du puzzle pour moi était d'ajouter un NuGet.config dans la racine de ma solution, frère à la .Fichier SLN comme David Ebbo l'a expliqué ici: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html .

De L'article de blog D'Ebbo, le contenu du fichier pour moi est simplement

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

Mise à jour:

L'URL de L'API NuGet a changé pour v3 (en vigueur à partir de septembre 2016). À partir de https://www.nuget.org/

<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
2
répondu madannes 2016-09-06 16:11:34

Le message d'erreur est complètement correct. J'ai essayé tous les trucs et aucun n'a fonctionné. Le projet (simple MVC Web App test) déplacé de Windows 8.1 VS 2015 Communauté à ma nouvelle boîte de test sur Windows 10. Toutes les dernières mises à jour de VS 2015 appliquées. Je ne pouvais même pas installer une version plus récente du paquet compilateurs.

Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop

J'ai finalement juste copié Microsoft.Net.Compilers.1.0.0 de L'ancien projet dans le nouveau et cela a fonctionné. Je pourrais alors commencer à mettre à jour d'autres paquets à plus récent version. On dirait un bug de processus de mise à niveau du projet nuget pour moi.

Remarque: le projet d'origine a été créé dans VS 2015 et n'a pas de méthodologies NuGet héritées.

1
répondu Peter Ennis 2015-09-21 01:27:50

Solution qui fonctionne dans mon cas - Visual Studio 2015 Enterprice, project. net 4.6.1

  1. Mise à niveau vers la mise à jour 3
  2. Installer les outils de développement Web

Installation de Visual studio wizzard

1
répondu Norbert Rozmus 2017-01-24 15:37:58

Pour moi, les paquets étaient là sous le chemin correct, mais les dossiers de construction à l'intérieur du dossier de paquet ne l'étaient pas. J'ai simplement supprimé tous les paquets qu'il disait manquants et reconstruit la solution et il a créé avec succès les dossiers de construction et le .accessoires de fichiers. Donc, les messages d'erreur étaient corrects en m'informant que quelque chose était un échec.

1
répondu Ian Hale 2018-03-12 20:18:55

Je n'ai trouvé aucune solution à cela, j'ai donc ajouté une copie du nuget.exe et un script powershell dans le répertoire racine de la solution appelée prebuild. ps1 avec le contenu suivant.

$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args

J'ai appelé ce script powershell dans ma construction dans le chemin du script de pré-construction entrez la description de l'image ici

0
répondu Nick Rubino 2016-08-27 18:10:11

Le mien a fonctionné quand j'ai copié le dossier de paquets avec le fichier de solution et le dossier de projet. Je n'ai tout simplement pas copié le dossier packages de l'endroit précédent.

0
répondu user1429899 2016-10-11 14:41:36

Vous pouvez également utiliser le message d'erreur suggéré comme indice. Voici comment, trouvez les Packages gérer pour la Solution, et cliquez sur le package résoudre NuGet manquant.

C'est tout

0
répondu Parama Dharmika 2016-12-06 16:07:46

Commentez l'Option du compilateur dans WebConfig:

<!--<system.codedom>
<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>-->

Mettre à jour la dernière Version des paquets dans le fichier de configuration des paquets

  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />

Reconstruire si tout est ok, pas besoin de continuer, sinon Cliquez avec le bouton droit sur le projet, cliquez sur "Décharger le projet" Cliquez-droit sur le projet et les modifier .fichier csproj

Validez le chemin de Codedom, il n'avait pas net45 dans les chemins précédents, ajoutez-le manuellement, enregistrez, chargez, reconstruisez. Il devrait fonctionner.

<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
0
répondu Vikas Bansal 2017-06-02 19:09:59

Comme beaucoup l'ont suggéré, la suppression de la balise <Target> peut la rendre compilable. Pourtant, méfiez-vous du fait que cela a un effet secondaire lorsque vous le faites pour des projets de test.

J'ai eu une erreur liée au paquet MSTest.TestAdapter nuget lors de la compilation. Résolu ce problème en supprimant la balise <Target>. Bien qu'il ait réussi à construire, les méthodes de test sont devenues non découvrables. Test explorer ne répertorie pas les méthodes de test dans ce projet et exécuter Test ou Debug Test ne fonctionnera pas aussi bien.

J'ai rencontré ceci en utilisant Visual Studio 2017 et .Net framework 4.7, il peut très bien se produire dans d'autres versions

0
répondu Saravanan 2017-10-05 20:02:52

Le problème pour moi était que NuGet ne pouvait pas automatiquement obtenir/mettre à jour les paquets car le chemin d'accès complet du fichier serait trop grand. corrigé en déplaçant ma solution vers un dossier dans Mes Documents au lieu d'un dossier profondément imbriqué.

Ensuite, vous pouvez faire un clic droit sur solution et sélectionner "restaurer les paquets NuGet" (ce qui n'est probablement pas nécessaire si vous le construisez et le laissez le faire pour vous), puis sélectionnez "Gérer les paquets NuGet pour la Solution" pour obtenir tous les paquets mis à jour au plus tard version.

C'était pour une solution d'un exemple D'application ASP MVC téléchargée à partir du site Web de Microsoft.

0
répondu pkr298 2017-11-15 18:10:11

Pour les ingénieurs DevOps/build, vous pouvez probablement résoudre ce problème en cours d'exécution nuget restore contre le SLN affecté, ou le projet si vous n'avez pas de SLN. Je dois le faire pour nos builds CI / CD pour tous nos projets UWP.

  1. assurez-vous que nuget est installé sur l'esclave build dans Visual Studio ou standalone. Si c'est le dernier, assurez-vous qu'il est dans le chemin et sautez l'étape 2.
  2. ouvrez la console cmd VS Dev ou chargez-la via une console déjà ouverte, ce que vous pouvez faire avec les instructions ci-dessous:
    VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat"
    ou
    VS2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
  3. call nuget restore MyStuff.SLN ou call nuget restore MyStuff.csproj s'il n'y a pas de SLN.
0
répondu kayleeFrye_onDeck 2018-02-06 21:48:21

Je ne sais pas si cela aidera quelqu'un, mais ce problème est apparu lorsque j'ai supprimé le code source de ma machine locale sans avoir jamais enregistré le fichier de solution sur TFS. (Pendant le développement initial, je faisais un clic droit et vérifiais le projet dans L'Explorateur de solutions, mais j'ai oublié de vérifier la solution elle-même.) Quand je devais travailler sur ce nouveau, tout ce que j'avais dans TFS était le .fichier csproj, Non .la sln fichier. Donc, dans VS j'ai fait un fichier - > Contrôle de Source - > Avancé - ouvert à partir du serveur et ouvert le .fichier csproj. De là, je L'ai fait sauver tout et il m'a demandé où je voulais sauver la .la sln fichier. J'essayais de sauver ce .fichier sln dans le répertoire du projet avec les autres dossiers (App_Data, App_Start, etc.), et non pas le répertoire de niveau supérieur. J'ai finalement compris que je dois sauver la .fichier sln vers le haut d'un répertoire à partir du dossier du projet de sorte qu'il est au même niveau que le dossier du projet. Tous mes chemins se sont résolus et j'ai pu le reconstruire.

0
répondu chersull_99 2018-05-03 18:02:49

J'ai eu ce problème comme une construction échouée dans Azure, lorsqu'elle est déployée à partir de Git.

Se trouve mon .gitignore excluait le dossier build de ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props.

Une fois que le dossier build a été (force) validé sur Git, le problème a été résolu.

0
répondu Neil Thompson 2018-08-07 12:27:28

Pour moi, mon fichier gitignore ignorait mon dossier packages. La ligne gitignore suivante causait le problème -

**/packages/*

Supprimé et restauré mon dossier packages. Espérons que cela aide quelqu'un d'autre.

0
répondu bsod_ 2018-08-23 12:18:42