'nuget' wird nicht erkannt, aber andere nuget-Befehle funktionieren

112

Ich versuche, ein Nuget-Paket mit http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory als Referenz zu erstellen . In meiner Package Manager-Konsole in Visual Studio kann ich den Befehl 'nuget' nicht verwenden. Ich kann 'Hilfe-Nuguet' erhalten und es wird angezeigt:

Die folgenden NuGet-Cmdlets sind enthalten.

    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.
  • Wenn ich jedoch Befehle mit Nuget starte, gibt es:

Der Begriff "Nuget" wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines bedienbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder wenn ein Pfad enthalten war, überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut.

In Zeile: 1 Zeichen: 6 + Nuget <<<< + CategoryInfo: ObjectNotFound: (Nuget: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Ich habe folgende Lösungen ausprobiert:

1> Alle Elemente schließen und neu starten

2> deinstallieren und neu installieren

3> Erstellen einer Powershell-Profildatei (diese gab es vorher nicht und sie hat tatsächlich alles kaputt gemacht)

Das Problem trat auf, nachdem ich meine Visual Studio 2012 Ultimate-Testversion auf registriert aktualisiert hatte. Ich hatte ursprünglich den VS 12 Pro installiert. Ich weiß nicht, ob das wirklich etwas damit zu tun hat, aber ich habe festgestellt, dass andere, die ähnliche Probleme hatten, vs 10 und 12 installiert haben.

Meine Frage lautet: "Weiß jemand, was er sonst noch versuchen soll?" Meine Theorie ist, dass der Pfad zum Befehl nuget fehlt, aber ich kann nicht finden, wie die Pfade konfiguriert werden, die die Paketmanagerkonsole verwendet, und ich bin nicht sicher, wo das Cmdlet-Nuget tatsächlich gespeichert ist.

Aktualisiert --- habe versucht, das Befehlszeilentool wie unten vorgeschlagen herunterzuladen. Dies führte dazu, dass nichts mehr funktionierte. Ich habe versucht zu deinstallieren und jetzt habe ich ein Element in vs2010-Erweiterungen für Nuget, für das keine Schaltfläche zum Installieren oder Deinstallieren aktiviert ist. Dies lässt mich glauben, dass es mit Erweiterungen zu tun hat, die über 2010 und 2012 installiert wurden und einen Teil meines kleinen Dramas ausmachen. Wenn jemand auch weiß, wie man eine deinstallierbare Erweiterung nuklearisiert, raten Sie bitte auch, aber ich werde eine andere Frage dafür versuchen.

done_merson
quelle
1
Haben Sie die Benutzerkontensteuerung aktiviert und haben Sie versucht, Visual Studio als Administrator auszuführen, um die Installation zu deinstallieren?
Betty
Install-Package NuGet.CommandLine ist die richtige Antwort.
Live-Love
@ live-love das OP versucht ein Paket zu erstellen, kein Paket zu installieren
Nick Turner

Antworten:

20

Sie können auch versuchen, den Pfad der Systemvariablen auf den Speicherort Ihrer Nuget-Exe festzulegen und VS neu zu starten.

  1. Öffnen Sie die SystemvariablePATH und fügen Sie den Speicherort Ihrer nuget.exe (das ist für mich: C:\Program Files (x86)\NuGet\Visual Studio 2013)
  2. Starten Sie Visual Studio neu

Ich hätte dies als Kommentar zu Ihrer Antwort @done_merson gepostet, aber ich hatte nicht den erforderlichen Ruf, um dies zu tun.

Matt
quelle
151

Nuget.exe befindet sich im .nugetOrdner Ihres Projekts. Es kann nicht direkt in der Package Manager-Konsole ausgeführt werden, sondern wird von Powershell-Befehlen ausgeführt, da diese Befehle einen benutzerdefinierten Pfad für sich selbst erstellen.

Meine zu lösenden Schritte sind:


Aktualisieren

NuGet kann mit dem folgenden Befehl einfach in Ihrem Projekt installiert werden:

Install-Package NuGet.CommandLine

Leonel Sanches da Silva
quelle
Was sollte als 'Variablenname' eingegeben werden?
Ievgen Naida
1
Ich musste nuget.exe auf demselben Laufwerk platzieren, auf dem ich den Befehl nuget ausgeführt habe (und den Wert der PATH-Umgebungsvariablen entsprechend anpassen)
mediafreakch
Sie können die Umgebungsvariable PATH anzeigen, indem Sie zu Systemsteuerung> System> Erweiterte Systemeinstellungen gehen und dann im Fenster Systemeigenschaften auf die Registerkarte Erweitert klicken. Dort wird die Schaltfläche "Umgebungsvariablen ..." angezeigt. Suchen Sie unter der Gruppe Systemvariablen nach der Umgebungsvariablen PATH. Fügen Sie dann einen weiteren Pfad hinzu, indem Sie ihn mit einem Semikolon (;) abgrenzen.
Jerameel Resco
1
Es muss einen Fehler geben ... Ich bekomme, Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'aber wenn ich NuGet schreibe, bekomme ich nur eine Fehlermeldung, dass der Befehl nicht existiert.
Peter
23
Install-Package NuGet.CommandLineist schrecklich, weil 1. es NuGet.CommandLineals Abhängigkeit zu meinem Projekt hinzugefügt wird (ew!) und 2. es in jedem Projekt separat durchgeführt werden muss. npmhat eine 'globale Installation' Option - hat NuGet nicht etwas Ähnliches?
BlueRaja - Danny Pflughoeft
60

Es gibt viel schönere Möglichkeiten, dies zu tun.

  1. Installieren Sie das Nuget.Build-Paket in Ihrem Projekt, das Sie packen möchten. Möglicherweise muss die Lösung nach der Installation geschlossen und erneut geöffnet werden.
  2. Installieren Sie Nuget über Chocolatey - viel schöner. Installieren Sie schokoladig: https://chocolatey.org/ und führen Sie es aus

    cinst Nuget.CommandLine

in Ihrer Eingabeaufforderung. Dadurch werden Nuget- und Setup-Umgebungspfade installiert, sodass Nuget immer verfügbar ist.

fenix2222
quelle
Nicht, wenn Sie npm verwenden, um schokoladig zu installieren
Oleg Mihailik
Nachdem ich mit den anderen Antworten kein Glück hatte, funktionierte dies sofort für mich. Chocolatey ersparte mir die manuelle PATH-Konfiguration
Sam
47

In [Package Manager Console]versuchen , die unten

Install-Package NuGet.CommandLine
BinSys
quelle
Nach "Install-Package NuGet.CommandLine" kann nuget.exe in PM ausgeführt werden.
BinSys
13
Ausführen: Der Begriff "Ausführen" wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens. Wenn ein Pfad enthalten war, überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut. VS2015
Rob
Ich habe das gleiche Problem wie @rob.
Grant Birchmeier
3
Geben Sie nicht die gesamte Zeile "Ausführen ..." ein. Geben Sie einfach ein:Install-Package NuGet.CommandLine
Serj Sagan
Warum, warum macht MS alles falsch?! Wenn sie Atomkraftwerke betreiben würden, wären wir alle tot! Warum sind diese kritischen Befehle nicht verfügbar und müssen separat heruntergeladen werden? Es ist offensichtlich nicht so, dass wir Speicherplatz auf dem Laufwerk sparen, da Microsoft die Bloatware jederzeit installiert, wenn sie die Gelegenheit dazu haben.
ATL_DEV
17

Das Nuget-Befehlszeilentool wird nicht mit der vsix-Datei geliefert, sondern ist ein separater Download

https://github.com/nuget/home

Betty
quelle
Dies ist die richtigste Antwort auf diese spezielle Frage.
Brady
12
  • Klicken Sie im Solution Explorer mit der rechten Maustaste auf Ihr Projekt .
  • Wählen Sie NuGet-Pakete für Lösung verwalten aus .
  • Suchen Sie in NuGet.CommandLine nach Microsoft und installieren Sie es. Suchen Sie in Nuget.CommandLine
  • Nach Abschluss der Installation finden Sie in Ihrem Projekt einen Ordner mit dem Namen packages . Gehen Sie zum Lösungs-Explorer und suchen Sie danach. Pakete
  • Suchen Sie in Paketen nach einem Ordner mit dem Namen NuGet.CommandLine.3.5.0 . Hier ist 3.5.0 nur der Versionsname. Ihr Ordnername wird entsprechend geändert. nuGet COmmand Line
  • Innerhalb NuGet.CommandLine.3.5.0 suchen einen Ordner mit dem Namen Tools . Werkzeuge
  • In Tools erhalten Sie Ihre nuget.exe nuget.exe
DeltaCap019
quelle
Ausnahme aufgetreten. (Ausnahme von HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire
11

In Visual Studio:

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

In PM:

Install-Package NuGet.CommandLine

Schließen Sie Visual Studio und öffnen Sie es erneut.

Kiran Chaudhari
quelle
7

Ich habe dies umgangen, indem ich die Datei nuget.exe gefunden und zu einem einfach zu tippenden Pfad (c: \ nuget \ nuget) gewechselt und dann das Nuget mit diesem Pfad aufgerufen habe. Dies scheint das Problem zu lösen. c: \ nuget \ nuget in der Paketmanagerkonsole funktioniert wie erwartet. Ich habe versucht, den von der Konsole verwendeten Pfad zu finden und den Umgebungspfad zu ändern, konnte ihn jedoch nie auf diese Weise zum Laufen bringen.

done_merson
quelle
1
Dies sollte die akzeptierte Antwort sein. Es ist wirklich nicht komplizierter als das!
Florian Winter
Update November 2019 - nuget.exe ist die EXE-Datei, die für Nuget-Befehlszeilentools benötigt wird (entweder über eine Powershell- oder Cmd-Konsole oder die Nuget Package Manager-Konsole in VS) - siehe hier docs.microsoft.com/en-us/nuget/ Referenz /… . Wenn Sie es nicht haben, bekommen Sie es hier - nuget.org/downloads
Chris Halcrow
4

Abrufen nuget.exevon https://www.nuget.org/downloads. Kopieren Sie es in einen lokalen Ordner und fügen Sie diesen Ordner der PATHUmgebungsvariablen hinzu.

Dadurch wird Nuget für jedes Projekt global verfügbar.

Mischa
quelle
So einfach ist das. Erstellen Sie "c: \ Nuget", gehen Sie zu Umgebungsvariablen, verdoppeln Sie den Pfad, klicken Sie auf "Neu", geben Sie "C: \ Nuget" ein und fertig. Alles zu tun ist Visual Studio ist 2010. Verwenden Sie die Powershell oder die Befehlszeile.
Nick Turner