„nuget” nie jest rozpoznawany, ale działają inne polecenia nuget

113

Próbuję utworzyć pakiet NuGet przy użyciu http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory jako odniesienia. Moja konsola menedżera pakietów w programie Visual Studio nie pozwala mi na użycie polecenia „nuget”. Jestem w stanie „Get-help nuguet” i wyświetla:

Uwzględniono następujące polecenia 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.
  • Jednak za każdym razem, gdy zaczynam polecenia z nugetem, daje:

Termin „nuget” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu operacyjnego. Sprawdź pisownię nazwy lub, jeśli ścieżka została dołączona, sprawdź, czy jest ona poprawna i spróbuj ponownie.

W wierszu: 1 char: 6 + nuget <<<< + CategoryInfo: ObjectNotFound: (nuget: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Wypróbowałem następujące rozwiązania:

1> zamknięcie wszystkich pozycji i ponowne uruchomienie

2> odinstalowanie i ponowne zainstalowanie

3> tworzenie pliku profilu PowerShell (wcześniej tego nie było, a to właściwie wszystko zepsuło)

Problem zaczął się pojawiać po uaktualnieniu mojej wersji próbnej programu Visual Studio 2012 Ultimate do zarejestrowanej. Pierwotnie miałem zainstalowany VS 12 Pro. Nie wiem, czy to naprawdę ma z tym coś wspólnego, ale zauważyłem, że inne osoby, które miały podobne problemy, mają zainstalowane wersje 10 i 12.

Moje pytanie brzmi: „czy ktoś wie, czego jeszcze spróbować?” Moja teoria mówi, że brakuje ścieżki do polecenia nuget, ale nie mogę znaleźć sposobu skonfigurowania ścieżek używanych przez konsolę menedżera pakietów i nie jestem pewien, gdzie faktycznie przechowywany jest nuget polecenia cmdlet.

Zaktualizowano - próbowano pobrać narzędzie wiersza poleceń, jak sugerowano poniżej. Doprowadziło to do tego, że nic nie działało. Próbowałem odinstalować, a teraz mam element w rozszerzeniach vs2010 dla NuGet, który nie ma włączonego przycisku instalacji ani unistall. To prowadzi mnie do wniosku, że ma to związek z rozszerzeniami zainstalowanymi w latach 2010 i 2012, które mają udział w moim małym dramacie. Jeśli ktoś również wie, jak nuke'ować rozszerzenie, którego nie można odinstalować, proszę również o poradę, ale spróbuję odpowiedzieć na inne pytanie.

done_merson
źródło
1
Czy masz włączoną UAC i czy próbowałeś uruchomić Visual Studio jako administrator, aby odinstalować rozszerzenie?
Betty,
Zainstaluj pakiet NuGet.CommandLine jest poprawną odpowiedzią.
miłość na żywo
@ live-love OP próbuje stworzyć pakiet, a nie zainstalować pakiet
Nick Turner

Odpowiedzi:

20

Możesz również spróbować ustawić ścieżkę zmiennej systemowej na lokalizację pliku nuget exe i ponownie uruchomić VS.

  1. Otwórz swój układ PATHzmiennej i dodać lokalizację nuget.exe (dla mnie jest to: C:\Program Files (x86)\NuGet\Visual Studio 2013)
  2. Uruchom ponownie program Visual Studio

Opublikowałbym to jako komentarz do Twojej odpowiedzi @done_merson, ale nie miałem wymaganej reputacji, aby to zrobić.

Matt
źródło
151

Nuget.exe zostanie umieszczony w .nugetfolderze projektu. Nie można go wykonać bezpośrednio w konsoli Menedżera pakietów, ale jest ono wykonywane przez polecenia programu PowerShell, ponieważ te polecenia tworzą dla siebie niestandardową ścieżkę.

Moje kroki do rozwiązania to:


Aktualizacja

NuGet można łatwo zainstalować w projekcie za pomocą następującego polecenia:

Zainstaluj pakiet NuGet.CommandLine

Leonel Sanches da Silva
źródło
Co należy wpisać jako „Nazwę zmiennej”?
Ievgen Naida
1
Musiałem umieścić nuget.exe na tym samym dysku, na którym uruchamiałem polecenie nuget (i odpowiednio dostosować wartość zmiennej środowiskowej PATH)
mediafreakch
Aby zobaczyć zmienną środowiskową PATH, wybierz Panel sterowania> System> Zaawansowane ustawienia systemu, a następnie w oknie Właściwości systemu kliknij kartę Zaawansowane, a zobaczysz przycisk „Zmienne środowiskowe ...”. W grupie Zmienne systemowe znajdź zmienną środowiskową PATH. Następnie dodaj kolejną ścieżkę, oddzielając ją średnikiem (;).
Jerameel Resco
1
Musi być jakiś błąd ... Otrzymuję, Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'ale kiedy piszę NuGet, pojawia się błąd, że polecenie nie istnieje.
Peter
23
Install-Package NuGet.CommandLinejest okropne, ponieważ 1. Dodaje NuGet.CommandLinejako zależność do mojego projektu (ew!), oraz 2. Trzeba to robić oddzielnie w każdym projekcie. npmma opcję „instalacja globalna” - czy NuGet nie ma czegoś podobnego !?
BlueRaja - Danny Pflughoeft
60

Jest na to dużo przyjemniejsze sposoby.

  1. Zainstaluj pakiet Nuget.Build w projekcie, który chcesz spakować. Może być konieczne zamknięcie i ponowne otwarcie rozwiązania po zainstalowaniu.
  2. Zainstaluj nuget przez chocolatey - znacznie ładniej. Zainstaluj chocolatey: https://chocolatey.org/ , a następnie uruchom

    cinst Nuget.CommandLine

w wierszu polecenia. Spowoduje to zainstalowanie ścieżek środowiska nuget i setup, więc nuget jest zawsze dostępny.

fenix2222
źródło
Nie, chyba że użyjesz npm do zainstalowania chocolatey
Oleg Mihailik
Ponieważ nie miałem szczęścia z innymi odpowiedziami, od razu zadziałało. Chocolatey zaoszczędził mi konieczności ręcznego konfigurowania PATH
Sam
47

W [Package Manager Console]spróbuj poniżej

Install-Package NuGet.CommandLine
BinSys
źródło
Po „Install-Package NuGet.CommandLine” plik NuGet.exe można wykonać w programie PM.
BinSys
13
Wykonaj: termin „Wykonaj” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu, który może być wykonywany. Sprawdź pisownię nazwy lub, jeśli ścieżka została dołączona, sprawdź, czy jest ona poprawna i spróbuj ponownie. VS2015
rob
Mam ten sam problem, co @rob.
Grant Birchmeier
3
Nie wpisuj całej linii „Wykonaj ...”. Wystarczy wpisać:Install-Package NuGet.CommandLine
Serj Sagan
Dlaczego och, dlaczego stwardnienie rozsiane robi wszystko źle ?! Gdyby kierowali elektrowniami jądrowymi, wszyscy byśmy nie żyli! Dlaczego te krytyczne polecenia są niedostępne i należy je pobrać oddzielnie? Oczywiście nie oszczędza nam to miejsca na dysku, ponieważ Microsoft z łatwością zainstaluje swoje oprogramowanie typu bloatware, gdy tylko nadarzy się taka możliwość.
ATL_DEV
17

Narzędzie wiersza poleceń nuget nie jest dostarczane z plikiem vsix, jest to osobne pobieranie

https://github.com/nuget/home

Betty
źródło
To jest najbardziej poprawna odpowiedź na to konkretne pytanie.
Brady
12
  • Kliknij prawym przyciskiem myszy projekt w eksploratorze rozwiązań .
  • Wybierz opcję Zarządzaj pakietami NuGet dla rozwiązania .
  • Wyszukaj NuGet.CommandLine firmy Microsoft i zainstaluj ją. Wyszukaj Nuget.CommandLine
  • Po zakończeniu instalacji w swoim projekcie znajdziesz folder o nazwie packages . Przejdź do eksploratora rozwiązań i poszukaj go. pakiety
  • Wewnątrz pakietów poszukaj folderu o nazwie NuGet.CommandLine.3.5.0 , tutaj 3.5.0 to tylko nazwa wersji, Twoja nazwa folderu odpowiednio się zmieni. nuGet COmmand Line
  • Wewnątrz NuGet.CommandLine.3.5.0 poszukaj folderu o nazwie tools . przybory
  • Wewnątrz narzędzi otrzymasz plik nuget.exe nuget.exe
DeltaCap019
źródło
Wystąpił wyjątek. (Wyjątek od HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire,
11

W programie Visual Studio:

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

W PM:

Install-Package NuGet.CommandLine

Zamknij program Visual Studio i otwórz go ponownie.

Kiran Chaudhari
źródło
7

Obejrzałem to, znajdując nuget.exe i przechodząc do ścieżki łatwej do wpisania (c: \ nuget \ nuget), a następnie wywołując nuget z tą ścieżką. Wydaje się, że to rozwiązuje problem. c: \ nuget \ nuget w konsoli menedżera pakietów działa zgodnie z oczekiwaniami. Próbowałem znaleźć ścieżkę, której używa konsola i zmienić ścieżkę środowiska, ale nigdy nie byłem w stanie zmusić jej do działania w ten sposób.

done_merson
źródło
1
To powinna być akceptowana odpowiedź. To naprawdę nie jest bardziej skomplikowane niż to!
Florian Winter
Aktualizacja listopad 2019 r. - plik NuGet.exe to plik .exe potrzebny do narzędzi wiersza polecenia NuGet (za pośrednictwem konsoli Powershell lub cmd albo konsoli Menedżera pakietów Nuget w programie VS) - zobacz tutaj docs.microsoft.com/en-us/nuget/ odniesienie /… . Jeśli go nie masz, pobierz go tutaj - nuget.org/downloads
Chris Halcrow
4

Pobierz nuget.exez https://www.nuget.org/downloads. Skopiuj go do folderu lokalnego i dodaj ten folder do PATHzmiennej środowiskowej.

Dzięki temu nuget będzie dostępny globalnie z dowolnego projektu.

misza
źródło
To takie proste. Utwórz „c: \ Nuget”, a następnie przejdź do zmiennych środowiskowych, podwójną ścieżkę, kliknij Nowy, wpisz „C: \ Nuget” i gotowe. Jak zrobić wszystko, Visual Studio to rok 2010. Użyj programu Powershell lub wiersza poleceń.
Nick Turner