"nuget" non viene riconosciuto ma altri comandi nuget funzionano


113

Sto cercando di creare un pacchetto nuget utilizzando http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory come riferimento. La mia console Package Manager in Visual Studio non mi consente di utilizzare il comando "nuget". Sono in grado di "Get-help nuguet" e viene visualizzato:

Sono inclusi i seguenti cmdlet 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.
  • Tuttavia, ogni volta che inizio i comandi con nuget viene fornito:

Il termine "nuget" non viene riconosciuto come nome di un cmdlet, una funzione, un file di script o un programma eseguibile. Controllare l'ortografia del nome o, se è stato incluso un percorso, verificare che il percorso sia corretto e riprovare.

Alla riga: 1 carattere: 6 + nuget <<<< + CategoryInfo: ObjectNotFound: (nuget: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Ho provato le seguenti soluzioni:

1> chiusura di tutti gli elementi e riavvio

2> disinstallare e reinstallare

3> creare un file di profilo PowerShell (questo non esisteva prima e questo ha effettivamente rotto tutto)

Il problema ha iniziato a comparire dopo aver aggiornato la mia versione di prova di Visual Studio 2012 Ultimate alla registrazione. Inizialmente avevo installato VS 12 Pro. Non so se questo abbia davvero a che fare con esso, ma ho notato che altri che avevano problemi simili hanno installato vs 10 e 12.

La mia domanda è "qualcuno sa cos'altro provare?" La mia teoria è che manca il percorso del comando nuget, ma non riesco a trovare come configurare i percorsi utilizzati dalla console del gestore pacchetti e non sono sicuro di dove sia effettivamente archiviato il cmdlet nuget.

Aggiornato --- ho provato a scaricare lo strumento della riga di comando come suggerito di seguito. Questo non ha portato a nulla che funzioni di nuovo. Ho provato a disinstallare e ora ho un elemento nelle estensioni vs2010 per nuget che non ha un pulsante di installazione o disinstallazione abilitato. Questo mi porta a credere che abbia a che fare con le estensioni installate tramite il 2010 e il 2012 che hanno una parte nel mio piccolo dramma. Se qualcuno sa anche come bombardare un'estensione non installabile, si prega di avvisare anche ma proverò un'altra domanda per questo.


1
Hai UAC abilitato e hai provato a eseguire Visual Studio come amministratore per rimuovere tutte le estensioni?
Betty

Install-Package NuGet.CommandLine è la risposta corretta.
live-love

@ live-love l'OP sta cercando di creare un pacchetto, non di installare un pacchetto
Nick Turner

Risposte:


20

Puoi anche provare a impostare il percorso della variabile di sistema nella posizione del tuo exe nuget e riavviare VS.

  1. Apri la tua PATHvariabile di sistema e aggiungi la posizione del tuo nuget.exe (per me questo è:C:\Program Files (x86)\NuGet\Visual Studio 2013 )
  2. Riavvia Visual Studio

L'avrei pubblicato come commento alla tua risposta @done_merson ma non avevo la reputazione richiesta per farlo.


151

Nuget.exe si trova in .nuget cartella del progetto. Non può essere eseguito direttamente nella console di Gestione pacchetti, ma viene eseguito dai comandi Powershell perché questi comandi creano un percorso personalizzato da soli.

I miei passaggi per risolvere sono:


Aggiornare

NuGet può essere facilmente installato nel progetto utilizzando il comando seguente:

Pacchetto di installazione NuGet.CommandLine


Cosa deve essere inserito come "Nome variabile"?
Ievgen Naida

1
Ho dovuto posizionare nuget.exe sulla stessa unità in cui stavo eseguendo il comando nuget (e regolare di conseguenza il valore della variabile di ambiente PATH)
mediafreakch

Puoi vedere la variabile d'ambiente PATH andando su Pannello di controllo> Sistema> Impostazioni di sistema avanzate quindi nella finestra Proprietà del sistema, fai clic sulla scheda Avanzate e lì vedrai il pulsante "Variabili d'ambiente ...". Nel gruppo Variabili di sistema vai a trovare la variabile d'ambiente PATH. Quindi aggiungi un altro percorso delimitandolo con un punto e virgola (;).
Jerameel Resco

1
Ci deve essere qualche bug ... Ottengo Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'ma quando scrivo NuGet ricevo solo un errore che il comando non esiste.
Peter

23
Install-Package NuGet.CommandLineè terribile perché, 1. Si aggiunge NuGet.CommandLinecome dipendenza al mio progetto (ew!), e 2. Deve essere fatto separatamente in ogni progetto. npmha un'opzione di 'installazione globale' - NuGet non ha qualcosa di simile !?
BlueRaja - Danny Pflughoeft

60

Ci sono modi molto più belli per farlo.

  1. Installa il pacchetto Nuget.Build nel tuo progetto che vuoi comprimere. Potrebbe essere necessario chiudere e riaprire la soluzione dopo l'installazione.
  2. Installa la pepita tramite cioccolatoso - molto più bello. Installa chocolatey: https://chocolatey.org/ , quindi esegui

    cinst Nuget.CommandLine

nel prompt dei comandi. Questo installerà nuget e configurerà i percorsi dell'ambiente, quindi nuget è sempre disponibile.


No, a meno che non usi npm per installare Chocolatey
Oleg Mihailik

Non avendo avuto fortuna con le altre risposte, per me ha funzionato subito. Chocolatey mi ha risparmiato di dover fare manualmente la configurazione PATH
Sam

47

Nel [Package Manager Console] provare il seguito

Install-Package NuGet.CommandLine

Dopo "Install-Package NuGet.CommandLine", nuget.exe può essere eseguito in PM.
BinSys

13
Esegui: il termine "Esegui" non viene riconosciuto come nome di un cmdlet, una funzione, un file di script o un programma eseguibile. Controlla l'ortografia del nome o, se è stato incluso un percorso, verifica che il percorso sia corretto e riprova. VS2015
rapina il

Ho lo stesso problema di @rob.
Grant Birchmeier

3
Non digitare l'intera riga "Esegui ...". Basta digitare:Install-Package NuGet.CommandLine
Serj Sagan

Perché oh perché la SM fa tutto male ?! Se facessero funzionare le centrali nucleari saremmo tutti morti! Perché questi comandi critici non sono disponibili e devono essere scaricati separatamente? Ovviamente non è per farci risparmiare spazio su disco poiché Microsoft installerà prontamente il proprio bloatware ogni volta che ne avrà l'opportunità.
ATL_DEV


12
  • Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni .
  • Seleziona Gestisci pacchetti NuGet per soluzione .
  • Cerca NuGet.CommandLine di Microsoft e installalo. Cerca Nuget.CommandLine
  • Al termine dell'installazione, troverai una cartella denominata packages nel tuo progetto. Vai a Esplora soluzioni e cercalo. pacchi
  • All'interno dei pacchetti cercare una cartella denominata NuGet.CommandLine.3.5.0 , qui 3.5.0 è solo il nome della versione il nome della cartella cambierà di conseguenza. nuGet COmmand Line
  • All'interno di NuGet.CommandLine.3.5.0 cercare una cartella denominata tools . utensili
  • All'interno degli strumenti otterrai il tuo nuget.exe nuget.exe

Si è verificata un'eccezione. (Eccezione da HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire

11

In Visual Studio:

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

In PM:

Install-Package NuGet.CommandLine

Chiudi Visual Studio e aprilo di nuovo.


7

Ho aggirato questo problema trovando nuget.exe e passando a un percorso facile da digitare (c: \ nuget \ nuget) e quindi chiamando il nuget con questo percorso. Questo sembra risolvere il problema. c: \ nuget \ nuget nella console del gestore di pacchetti funziona come previsto. Ho cercato di trovare il percorso che la console stava utilizzando e di modificare il percorso dell'ambiente, ma non sono mai riuscito a farlo funzionare in quel modo.


1
Questa dovrebbe essere la risposta accettata. Non è davvero più complicato di così!
Florian Winter il

Aggiornamento novembre 2019: nuget.exe è il file .exe necessario per gli strumenti della riga di comando di Nuget (tramite una console Powershell o cmd o la console di Gestione pacchetti Nuget in VS) - vedere qui docs.microsoft.com/en-us/nuget/ riferimento /… . Se non ce l'hai, scaricalo
Chris Halcrow

4

Recupera nuget.exeda https://www.nuget.org/downloads. Copialo in una cartella locale e aggiungi quella cartella al filePATH variabile d'ambiente.

Questo renderà nuget disponibile a livello globale, da qualsiasi progetto.


È proprio così facile. Crea "c: \ Nuget", quindi vai su variabili d'ambiente, doppio percorso, fai clic su Nuovo, metti "C: \ Nuget" e il gioco è fatto. Fare tutto in Visual Studio è il 2010. Usa Powershell o la riga di comando.
Nick Turner
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.