'nuget' no se reconoce pero otros comandos nuget funcionan

112

Estoy tratando de crear un paquete nuget utilizando http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory como referencia. Mi consola Package Manager en Visual Studio no me permite usar el comando 'nuget'. Puedo 'Obtener ayuda nuguet' y muestra:

Se incluyen los siguientes cmdlets de NuGet.

    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.
  • Sin embargo, cada vez que comienzo los comandos con nuget se da:

El término 'nuget' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable. Verifique la ortografía del nombre, o si se incluyó una ruta, verifique que la ruta sea correcta y vuelva a intentarlo.

En la línea: 1 carácter: 6 + nuget <<<< + CategoryInfo: ObjectNotFound: (nuget: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

He probado las siguientes soluciones:

1> cerrar todos los elementos y reiniciar

2> desinstalar y reinstalar

3> crear un archivo de perfil de PowerShell (esto no existía antes y esto realmente rompió todo)

El problema comenzó a aparecer después de que actualicé mi versión de prueba de Visual Studio 2012 Ultimate a registrado. Originalmente tenía instalado el VS 12 Pro. No sé si eso realmente tiene algo que ver con eso, pero noté que otros que tenían problemas similares tenían instalados vs 10 y 12.

Mi pregunta es "¿Alguien sabe qué más probar?" Mi teoría es que falta la ruta al comando nuget, pero no puedo encontrar cómo configurar las rutas que usa la consola del administrador de paquetes y no estoy seguro de dónde está realmente almacenado el cmdlet nuget.

Actualizado --- intenté descargar la herramienta de línea de comando como se sugiere a continuación. Esto hace que nada vuelva a funcionar. Intenté desinstalarlo y ahora tengo un elemento en las extensiones vs2010 para nuget que no tiene habilitado un botón de instalación o desinstalación. Esto me lleva a creer que tiene que ver con extensiones instaladas a través de 2010 y 2012 que tienen parte en mi pequeño drama. Si alguien también sabe cómo destruir una extensión desinstalable, por favor avíseme también, pero intentaré otra pregunta para eso.

done_merson
fuente
1
¿Tiene UAC habilitado y ha intentado ejecutar Visual Studio como administrador para desinstalar toda la extensión?
Betty
Install-Package NuGet.CommandLine es la respuesta correcta.
amor vivo
@ live-love el OP está tratando de crear un paquete, no instalar un paquete
Nick Turner

Respuestas:

20

También puede intentar configurar la ruta de la variable del sistema a la ubicación de su nuget exe y reiniciar VS.

  1. Abrir su sistema PATHvariable y añadir la ubicación de su nuget.exe (para mí esto es: C:\Program Files (x86)\NuGet\Visual Studio 2013)
  2. Reinicie Visual Studio

Hubiera publicado esto como un comentario a su respuesta @done_merson, pero no tenía la reputación necesaria para hacer eso.

Mate
fuente
151

Nuget.exe se coloca en la .nugetcarpeta de su proyecto. No se puede ejecutar directamente en Package Manager Console, pero se ejecuta mediante comandos de Powershell porque estos comandos crean una ruta personalizada por sí mismos.

Mis pasos para resolver son:


Actualizar

NuGet se puede instalar fácilmente en su proyecto usando el siguiente comando:

Paquete de instalación NuGet.CommandLine

Leonel Sanches da Silva
fuente
¿Qué se debe ingresar como 'Nombre de variable'?
Ievgen Naida
1
Tuve que colocar nuget.exe en la misma unidad en la que estaba ejecutando el comando nuget (y ajustar el valor de la variable de entorno PATH en consecuencia)
mediafreakch
Puede ver la variable de entorno PATH yendo a Panel de control> Sistema> Configuración avanzada del sistema, luego en la ventana Propiedades del sistema, haga clic en la pestaña Avanzado y allí verá el botón "Variables de entorno ...". En el grupo de variables del sistema, busque la variable de entorno PATH. Luego agregue otra ruta delimitándola con un punto y coma (;).
Jerameel Resco
1
Debe haber algún error ... Me sale, Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'pero cuando escribo NuGet me sale un error de que el comando no existe.
Peter
23
Install-Package NuGet.CommandLinees terrible porque, 1. Se agrega NuGet.CommandLinecomo una dependencia a mi proyecto (¡ew!), y 2. Debe hacerse por separado en cada proyecto. npmtiene una opción de 'instalación global' - ¿NuGet no tiene algo similar?
BlueRaja - Danny Pflughoeft
60

Hay formas mucho mejores de hacerlo.

  1. Instale el paquete Nuget.Build en el proyecto que desea empaquetar. Es posible que deba cerrar y volver a abrir la solución después de la instalación.
  2. Instale nuget a través de chocolatey, mucho mejor. Instale chocolatey: https://chocolatey.org/ , luego ejecute

    cinst Nuget.CommandLine

en su símbolo del sistema. Esto instalará nuget y configurará las rutas del entorno, por lo que nuget siempre estará disponible.

fenix2222
fuente
No, a menos que use npm para instalar chocolatey
Oleg Mihailik
Después de no tener suerte con las otras respuestas, esto funcionó de inmediato para mí. Chocolatey me salvó de tener que hacer la configuración PATH manualmente
Sam
47

En [Package Manager Console]prueba lo siguiente

Install-Package NuGet.CommandLine
BinSys
fuente
Después de "Install-Package NuGet.CommandLine", nuget.exe se puede ejecutar en PM.
BinSys
13
Ejecutar: el término 'Ejecutar' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable. Verifique la ortografía del nombre o, si se incluyó una ruta, verifique que la ruta sea correcta y vuelva a intentarlo. VS2015
rob
Tengo el mismo problema que @rob.
Grant Birchmeier
3
No escriba toda la línea "Ejecutar ...". Simplemente escriba:Install-Package NuGet.CommandLine
Serj Sagan
¿Por qué, oh, por qué la EM hace todo mal? ¡Si operaran plantas de energía nuclear, todos estaríamos muertos! ¿Por qué estos comandos críticos no están disponibles y deben descargarse por separado? Obviamente, no es para ahorrarnos espacio en el disco, ya que Microsoft instalará fácilmente su bloatware siempre que tenga la oportunidad.
ATL_DEV
17

La herramienta de línea de comandos nuget no viene con el archivo vsix, es una descarga separada

https://github.com/nuget/home

Betty
fuente
Esta es la respuesta más correcta a esta pregunta específica.
Brady
12
  • Haga clic derecho en su proyecto en el explorador de soluciones .
  • Seleccione Administrar paquetes NuGet para la solución .
  • Busque NuGet.CommandLine de Microsoft e instálelo . Buscar Nuget.CommandLine
  • Al completar la instalación, encontrará una carpeta llamada paquetes en su proyecto. Vaya al explorador de soluciones y búsquelo. paquetes
  • Dentro de los paquetes, busque una carpeta llamada NuGet.CommandLine.3.5.0 , aquí 3.5.0 es solo el nombre de la versión, el nombre de su carpeta cambiará en consecuencia. Línea de comando nuGet
  • Dentro de NuGet.CommandLine.3.5.0 busque una carpeta denominada herramientas . herramientas
  • Dentro de las herramientas obtendrá su nuget.exe nuget.exe
DeltaCap019
fuente
Ocurrió una excepción. (Excepción de HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire
11

En Visual Studio:

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

En PM:

Install-Package NuGet.CommandLine

Cierre Visual Studio y ábralo de nuevo.

Kiran Chaudhari
fuente
7

Lo solucioné encontrando nuget.exe y moviéndome a una ruta fácil de escribir (c: \ nuget \ nuget) y luego llamando al nuget con esta ruta. Esto parece solucionar el problema. c: \ nuget \ nuget en la consola del administrador de paquetes funciona como se esperaba. Traté de encontrar la ruta que estaba usando la consola y cambié la ruta del entorno, pero nunca pude hacer que funcionara de esa manera.

done_merson
fuente
1
Esta debería ser la respuesta aceptada. ¡Realmente no es más complicado que esto!
Florian Winter
Actualización de noviembre de 2019: nuget.exe es el .exe necesario para las herramientas de línea de comandos de Nuget (a través de una consola Powershell o cmd, o la consola del administrador de paquetes de Nuget en VS); consulte aquí docs.microsoft.com/en-us/nuget/ referencia /… . Si no lo tiene, consígalo aquí - nuget.org/downloads
Chris Halcrow
4

Recuperar nuget.exede https://www.nuget.org/downloads. Cópielo en una carpeta local y agregue esa carpeta a la PATHvariable de entorno.

Esto hará que nuget esté disponible globalmente, desde cualquier proyecto.

misha
fuente
Es así de fácil. Cree "c: \ Nuget", luego vaya a las variables de entorno, doble Ruta, haga clic en Nuevo, coloque "C: \ Nuget" y listo. Hacer todo es Visual Studio en 2010. Utilice Powershell o la línea de comandos.
Nick Turner