'nuget' не распознается, но другие команды nuget работают

113

Я пытаюсь создать пакет nuget, используя http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory в качестве ссылки. Моя консоль диспетчера пакетов в Visual Studio не позволяет мне использовать команду nuget. Я могу "Get-help nuguet", и он отображает:

Включены следующие командлеты 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.
  • Однако всякий раз, когда я запускаю команды с помощью nuget, он дает:

Термин «nuget» не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, убедитесь, что путь правильный, и попробуйте еще раз.

В строке: 1 символ: 6 + nuget <<<< + CategoryInfo: ObjectNotFound: (nuget: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Я пробовал следующие решения:

1> закрытие всех элементов и перезапуск

2> удаление и переустановка

3> создание файла профиля PowerShell (этого раньше не было, и это фактически все сломало)

Проблема начала появляться после того, как я обновил пробную версию Visual Studio 2012 Ultimate до зарегистрированной. Изначально у меня был установлен VS 12 Pro. Я не знаю, имеет ли это какое-то отношение к этому, но я заметил, что у других, у которых были похожие проблемы, были установлены vs 10 и 12.

Мой вопрос: "Кто-нибудь знает, что еще попробовать?" Моя теория состоит в том, что путь к команде nuget отсутствует, но я не могу найти, как настроить пути, которые использует консоль диспетчера пакетов, и я не уверен, где на самом деле хранится nuget командлета.

Обновлено --- попытался загрузить инструмент командной строки, как предложено ниже. Это привело к тому, что снова ничего не работает. Я попытался удалить, и теперь у меня есть элемент в расширениях vs2010 для nuget, для которого не включена кнопка установки или удаления. Это заставляет меня думать, что это связано с расширениями, установленными в 2010 и 2012 годах, которые сыграли роль в моей маленькой драме. Если кто-то также знает, как уничтожить удаляемое расширение, посоветуйте, пожалуйста, также, но я попробую другой вопрос для этого.

done_merson
источник
1
Включен ли у вас UAC и пробовали ли вы запустить Visual Studio от имени администратора, чтобы удалить все расширения?
Бетти
Установочный пакет NuGet.CommandLine - правильный ответ.
live-love
@ live-love OP пытается создать пакет, а не установить пакет
Ник Тернер,

Ответы:

20

Вы также можете попробовать установить путь к системной переменной для местоположения вашего nuget exe и перезапустить VS.

  1. Откройте вашу систему PATH переменную и добавить местоположение вашего nuget.exe (для меня это: C:\Program Files (x86)\NuGet\Visual Studio 2013)
  2. Перезапустите Visual Studio

Я бы опубликовал это как комментарий к вашему ответу @done_merson, но у меня не было необходимой репутации для этого.

Мэтт
источник
151

Nuget.exe находится по адресу .nuget папке вашего проекта. Он не может быть выполнен непосредственно в консоли диспетчера пакетов, но выполняется командами Powershell, поскольку эти команды создают для себя собственный путь.

Мои шаги по решению:


Обновить

NuGet можно легко установить в вашем проекте с помощью следующей команды:

Установочный пакет NuGet.CommandLine

Леонель Санчес да Силва
источник
Что следует вводить как «Имя переменной»?
Евгений Наида
1
Мне пришлось разместить nuget.exe на том же диске, где я запускал команду nuget (и соответствующим образом отрегулировать значение переменной среды PATH)
mediafreakch
Вы можете увидеть переменную среды PATH, перейдя в Панель управления> Система> Расширенные настройки системы, затем в окне «Свойства системы» нажмите вкладку «Дополнительно» и там вы увидите кнопку «Переменные среды ...». В группе системных переменных найдите переменную среды PATH. Затем добавьте еще один путь, разделив его точкой с запятой (;).
Jerameel Resco
1
Должна быть какая-то ошибка ... Я получаю, Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'но когда я пишу NuGet, я просто получаю сообщение об ошибке, что команда не существует.
Питер
23
Install-Package NuGet.CommandLineужасен, потому что: 1. Он добавляет NuGet.CommandLineзависимость к моему проекту (фу!) и 2. Это нужно делать отдельно в каждом проекте. npmесть опция «глобальной установки» - разве в NuGet нет чего-то подобного !?
BlueRaja - Дэнни Пфлугхофт
60

Есть гораздо более приятные способы сделать это.

  1. Установите пакет Nuget.Build в свой проект, который вы хотите упаковать. После установки может потребоваться закрыть и снова открыть решение.
  2. Установить nuget через шоколадку - намного приятнее. Установите шоколадный: https://chocolatey.org/ , затем запустите

    cinst Nuget.CommandLine

в командной строке. Это установит nuget и установит пути к среде, поэтому nuget всегда доступен.

fenix2222
источник
Нет, если вы не используете npm для установки шоколадного
Олег Михайлик
После того, как мне не повезло с другими ответами, это сразу сработало для меня. Chocolatey избавил меня от необходимости вручную настраивать PATH
Сэм,
47

В [Package Manager Console]попробуйте ниже

Install-Package NuGet.CommandLine
BinSys
источник
После «Install-Package NuGet.CommandLine» nuget.exe можно запустить в личном кабинете.
BinSys
13
Выполнить: термин «Выполнить» не распознается как имя командлета, функции, файла сценария или работающей программы. Проверьте написание имени или, если был включен путь, проверьте правильность пути и повторите попытку. VS2015
rob
У меня та же проблема, что и у @rob.
Grant Birchmeier
3
Не вводите всю строку «Выполнить ...». Просто введите:Install-Package NuGet.CommandLine
Серж Саган
Почему, ну почему MS все делает не так ?! Если бы они управляли атомными электростанциями, мы все были бы мертвы! Почему эти важные команды недоступны и их нужно загружать отдельно? Очевидно, это не для экономии места на диске, поскольку Microsoft с готовностью установит свои раздутые программы при любой возможности.
ATL_DEV
17

Инструмент командной строки nuget не поставляется с файлом vsix, он загружается отдельно

https://github.com/nuget/home

Бетти
источник
Это наиболее правильный ответ на этот конкретный вопрос.
Brady
12
  • Щелкните правой кнопкой мыши свой проект в обозревателе решений .
  • Выберите Управление пакетами NuGet для решения .
  • Найдите NuGet.CommandLine от Microsoft и установите его. Искать в Nuget.CommandLine
  • После завершения установки вы найдете в своем проекте папку с именем packages . Перейдите в обозреватель решений и найдите его. пакеты
  • Внутри пакетов найдите папку с именем NuGet.CommandLine.3.5.0 , здесь 3.5.0 - это просто имя версии, имя вашей папки изменится соответствующим образом. nuGet COmmand Line
  • Внутри NuGet.CommandLine.3.5.0 найдите папку с именем tools . инструменты
  • Внутри инструментов вы получите nuget.exe nuget.exe
DeltaCap019
источник
Произошло исключение. (Исключение из HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire
11

В Visual Studio:

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

В личку:

Install-Package NuGet.CommandLine

Закройте Visual Studio и снова откройте его.

Киран Чаудхари
источник
7

Я обошел это, найдя nuget.exe и перейдя к пути, который легко ввести (c: \ nuget \ nuget), а затем вызвал nuget с этим путем. Кажется, это решает проблему. c: \ nuget \ nuget в консоли диспетчера пакетов работает должным образом. Я попытался найти путь, который использовала консоль, и изменить путь к среде, но так и не смог заставить его работать таким образом.

done_merson
источник
1
Это должен быть принятый ответ. На самом деле это не сложнее!
Флориан Винтер,
Обновление от ноября 2019 г. - nuget.exe - это файл .exe, необходимый для инструментов командной строки Nuget (через консоль Powershell, cmd или консоль диспетчера пакетов Nuget в VS) - см. Здесь docs.microsoft.com/en-us/nuget/ ссылка /… . Если у вас его нет, получите его здесь - nuget.org/downloads
Крис Хэлкроу
4

Получить nuget.exeиз https://www.nuget.org/downloads. Скопируйте его в локальную папку и добавьте эту папку в PATHпеременную среды.

Это сделает nuget доступным глобально из любого проекта.

миша
источник
Это так просто. Создайте «c: \ Nuget», затем перейдите к переменным среды, двойной путь, нажмите «Создать», поместите «C: \ Nuget», и все готово. Все делается в Visual Studio 2010. Используйте Powershell или командную строку.
Ник Тернер,