'nuget' n'est pas reconnu mais les autres commandes nuget fonctionnent


113

J'essaie de créer un package nuget en utilisant http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory comme référence. Ma console Package Manager dans Visual Studio ne me permet pas d'utiliser la commande «nuget». Je suis capable de 'Get-help nuguet' et il affiche:

Les applets de commande NuGet suivantes sont incluses.

    Cmdlet                  Description
    ------------------      ----------------------------------------------
    Get-Package             Gets the set of packages available from the package source.

    Install-Package         Installs a package and its dependencies into the project.

    Uninstall-Package       Uninstalls a package. If other packages depend on this package, 
                            the command will fail unless the –Force option is specified.

    Update-Package          Updates a package and its dependencies to a newer version.

    Add-BindingRedirect     Examines all assemblies within the output path for a project
                            and adds binding redirects to the application (or web) 
                            configuration file where necessary.

    Get-Project             Returns a reference to the DTE (Development Tools Environment) 
                            for the specified project. If none is specifed, returns the 
                            default project selected in the Package Manager Console.

    Open-PackagePage        Open the browser pointing to ProjectUrl, LicenseUrl or 
                            ReportAbuseUrl of the specified package.

    Register-TabExpansion   Registers a tab expansion for the parameters of a command.
  • Cependant, chaque fois que je lance des commandes avec nuget, cela donne:

Le terme «nuget» n'est pas reconnu comme le nom d'une applet de commande, d'une fonction, d'un fichier de script ou d'un programme utilisable. Vérifiez l'orthographe du nom, ou si un chemin a été inclus, vérifiez que le chemin est correct et réessayez.

À la ligne: 1 char: 6 + nuget <<<< + CategoryInfo: ObjectNotFound: (nuget: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

J'ai essayé les solutions suivantes:

1> fermeture de tous les éléments et redémarrage

2> désinstaller et réinstaller

3> création d'un fichier de profil PowerShell (cela n'existait pas auparavant et cela a tout cassé)

Le problème a commencé à apparaître après la mise à niveau de ma version d'évaluation de Visual Studio 2012 Ultimate pour être enregistrée. J'avais installé à l'origine le VS 12 Pro. Je ne sais pas si cela a vraiment quelque chose à voir avec ça, mais j'ai remarqué que d'autres qui avaient des problèmes similaires ont installé vs 10 et 12.

Ma question est "est-ce que quelqu'un sait quoi essayer d'autre?" Ma théorie est que le chemin d'accès à la commande nuget est manquant mais je ne trouve pas comment configurer les chemins utilisés par la console du gestionnaire de packages et je ne sais pas où le nuget de l'applet de commande est réellement stocké.

Mis à jour --- a essayé de télécharger l'outil de ligne de commande comme suggéré ci-dessous. Cela a conduit à rien de fonctionner à nouveau. J'ai essayé de désinstaller et maintenant j'ai un élément dans les extensions vs2010 pour nuget qui n'a pas de bouton d'installation ou de désinstallation activé. Cela me porte à croire que cela a à voir avec les extensions installées via 2010 et 2012 qui ont une part dans mon petit drame. Si quelqu'un sait également comment détruire une extension désinstallable, veuillez également le conseiller, mais je vais essayer une autre question pour cela.


1
Avez-vous activé l'UAC et avez-vous essayé d'exécuter Visual Studio en tant qu'administrateur pour désimprimer l'extension?
Betty

Install-Package NuGet.CommandLine est la bonne réponse.
live-love le

@ live-love, l'OP essaie de créer un paquet, pas d'installer un paquet
Nick Turner

Réponses:


20

Vous pouvez également essayer de définir le chemin d'accès de la variable système à l'emplacement de votre exe nuget et de redémarrer VS.

  1. Ouvrez votre système PATHvariable et ajouter l'emplacement de votre nuget.exe (c'est pour moi: C:\Program Files (x86)\NuGet\Visual Studio 2013)
  2. Redémarrez Visual Studio

J'aurais posté ceci comme commentaire à votre réponse @done_merson mais je n'avais pas la réputation requise pour le faire.


151

Nuget.exe est placé dans le .nugetdossier de votre projet. Il ne peut pas être exécuté directement dans la console du gestionnaire de package, mais est exécuté par les commandes Powershell car ces commandes créent un chemin personnalisé pour elles-mêmes.

Mes étapes à résoudre sont:


Mettre à jour

NuGet peut être facilement installé dans votre projet à l'aide de la commande suivante:

Package d'installation NuGet.CommandLine


Que faut-il entrer comme «nom de variable»?
Ievgen Naida

1
J'ai dû placer nuget.exe sur le même lecteur que celui où j'exécutais la commande nuget (et ajuster la valeur de la variable d'environnement PATH en conséquence)
mediafreakch

Vous pouvez voir la variable d'environnement PATH en allant dans Panneau de configuration> Système> Paramètres système avancés, puis dans la fenêtre Propriétés système, cliquez sur l'onglet Avancé et là, vous verrez le bouton «Variables d'environnement ...». Sous le groupe Variables système, recherchez la variable d'environnement PATH. Ajoutez ensuite un autre chemin en le délimitant par un point-virgule (;).
Jerameel Resco

1
Il doit y avoir un bug ... Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'J'obtiens mais quand j'écris NuGet j'obtiens juste une erreur que la commande n'existe pas.
Peter

23
Install-Package NuGet.CommandLineest terrible parce que, 1. Cela ajoute NuGet.CommandLineune dépendance à mon projet (ew!), et 2. Cela doit être fait séparément dans chaque projet. npma une option 'd'installation globale' - NuGet n'a-t-il pas quelque chose de similaire?
BlueRaja - Danny Pflughoeft

60

Il existe de bien meilleures façons de le faire.

  1. Installez le package Nuget.Build dans le projet que vous souhaitez compresser. Il peut être nécessaire de fermer et de rouvrir la solution après l'installation.
  2. Installez nuget via chocolatey - beaucoup plus agréable. Installez chocolatey: https://chocolatey.org/ , puis exécutez

    cinst Nuget.CommandLine

dans votre invite de commande. Cela installera nuget et les chemins de l'environnement de configuration, donc nuget est toujours disponible.


Sauf si vous utilisez npm pour installer chocolatey
Oleg Mihailik

Après n'avoir pas eu de chance avec les autres réponses, cela a fonctionné tout de suite pour moi. Chocolatey m'a évité d'avoir à faire la configuration PATH manuellement
Sam

47

Dans [Package Manager Console]essayez ci - dessous

Install-Package NuGet.CommandLine

Après "Install-Package NuGet.CommandLine", nuget.exe peut être exécuté dans PM.
BinSys

13
Execute: le terme «Execute» n'est pas reconnu comme le nom d'une cmdlet, d'une fonction, d'un fichier de script ou d'un programme utilisable. Vérifiez l'orthographe du nom ou, si un chemin a été inclus, vérifiez que le chemin est correct et réessayez. VS2015
rob

J'ai le même problème que @rob.
Grant Birchmeier

3
Ne tapez pas toute la ligne "Exécuter ...". Il suffit de taper:Install-Package NuGet.CommandLine
Serj Sagan

Pourquoi oh pourquoi la SP fait-elle tout de travers?! S'ils dirigeaient des centrales nucléaires, nous serions tous morts! Pourquoi ces commandes critiques ne sont-elles pas disponibles et doivent-elles être téléchargées séparément? Ce n'est évidemment pas pour nous économiser de l'espace disque car Microsoft installera facilement son bloatware chaque fois qu'il en aura l'occasion.
ATL_DEV


12
  • Cliquez avec le bouton droit sur votre projet dans l' explorateur de solutions .
  • Sélectionnez Gérer les packages NuGet pour la solution .
  • Recherchez NuGet.CommandLine de Microsoft et installez-le. Rechercher Nuget.CommandLine
  • Une fois l'installation terminée, vous trouverez un dossier nommé packages dans votre projet. Accédez à l'explorateur de solutions et recherchez-le. paquets
  • Les packages internes recherchent un dossier nommé NuGet.CommandLine.3.5.0 , ici 3.5.0 est juste le nom de la version, le nom de votre dossier changera en conséquence. nuGet COmmand Line
  • À l'intérieur de NuGet.CommandLine.3.5.0 recherchez un dossier nommé tools . outils
  • À l'intérieur des outils, vous obtiendrez votre nuget.exe nuget.exe

Il y a une exception. (Exception de HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire

11

Dans Visual Studio:

Tools -> Nuget Package Manager -> Package Manager Console.

En PM:

Install-Package NuGet.CommandLine

Fermez Visual Studio et ouvrez-le à nouveau.


7

J'ai contourné cela en trouvant le nuget.exe et en passant à un chemin facile à taper (c: \ nuget \ nuget), puis en appelant le nuget avec ce chemin. Cela semble résoudre le problème. c: \ nuget \ nuget sur la console du gestionnaire de packages fonctionne comme prévu. J'ai essayé de trouver le chemin utilisé par la console et de modifier le chemin de l'environnement, mais je n'ai jamais pu le faire fonctionner de cette manière.


1
Cela devrait être la réponse acceptée. Ce n'est vraiment pas plus compliqué que ça!
Florian Winter

Mise à jour de novembre 2019 - nuget.exe est le .exe nécessaire pour les outils de ligne de commande Nuget (via une console Powershell ou cmd, ou la console Nuget Package Manager dans VS) - voir ici docs.microsoft.com/en-us/nuget/ référence /… . Si vous ne l'avez pas, obtenez-le ici - nuget.org/downloads
Chris Halcrow

4

Récupérer à nuget.exepartir de https://www.nuget.org/downloads. Copiez-le dans un dossier local et ajoutez ce dossier à la PATHvariable d'environnement.

Cela rendra nuget disponible dans le monde entier, à partir de n'importe quel projet.


C'est aussi simple que cela. Créez "c: \ Nuget", puis allez dans les variables d'environnement, double Path, cliquez sur Nouveau, mettez "C: \ Nuget" et vous avez terminé. Tout faire, c'est Visual Studio, c'est 2010. Utilisez le Powershell ou la ligne de commande.
Nick Turner le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.