'nuget' não é reconhecido, mas outros comandos nuget estão funcionando

113

Estou tentando criar um pacote nuget usando http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory como referência. Meu console do gerenciador de pacotes no Visual Studio não está me permitindo usar o comando 'nuget'. Consigo 'obter ajuda nuguet' e ele exibe:

Os seguintes cmdlets NuGet estão incluídos.

    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.
  • No entanto, sempre que começo comandos com nuget, ele dá:

O termo 'nuget' não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho foi incluído, verifique se o caminho está correto e tente novamente.

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

Tentei as seguintes soluções:

1> fechando todos os itens e reiniciando

2> desinstalando e reinstalando

3> criar um arquivo de perfil do PowerShell (isso não existia antes e na verdade quebrou tudo)

O problema começou a aparecer depois que atualizei minha versão de avaliação do Visual Studio 2012 Ultimate para o registrado. Eu tinha originalmente instalado o VS 12 Pro. Não sei se isso realmente tem alguma coisa a ver com isso, mas percebi que outros que tiveram problemas semelhantes têm vs 10 e 12 instalados.

Minha pergunta é "alguém sabe o que mais tentar?" Minha teoria é que o caminho para o comando nuget está ausente, mas não consigo descobrir como configurar os caminhos que o console do gerenciador de pacotes usa e não tenho certeza de onde o nuget do cmdlet está realmente armazenado.

Atualizado --- tentei baixar a ferramenta de linha de comando conforme sugerido abaixo. Isso fez com que nada funcionasse novamente. Tentei desinstalar e agora tenho um item nas extensões vs2010 para o nuget que não tem um botão de instalação ou desinstalação habilitado. Isso me leva a crer que tem a ver com extensões instaladas em 2010 e 2012 que tem uma parte no meu pequeno drama. Se alguém também souber como destruir uma extensão desinstalável, avise também, mas vou tentar outra pergunta para isso.

done_merson
fonte
1
Você ativou o UAC e tentou executar o Visual Studio como administrador para desinstalar todas as extensões?
Betty,
Install-Package NuGet.CommandLine é a resposta correta.
live-love
@ live-love o OP está tentando criar um pacote, não instalar um pacote
Nick Turner

Respostas:

20

Você também pode tentar definir o caminho da variável do sistema para a localização do seu exe nuget e reiniciar o VS.

  1. Abra seu sistema PATHvariável e adicionar a localização do seu nuget.exe (para mim isso é: C:\Program Files (x86)\NuGet\Visual Studio 2013)
  2. Reinicie o Visual Studio

Eu teria postado isso como um comentário à sua resposta @done_merson, mas não tinha a reputação necessária para fazer isso.

Matt
fonte
151

Nuget.exe é colocado na .nugetpasta do seu projeto. Ele não pode ser executado diretamente no Console do gerenciador de pacotes, mas é executado por comandos do Powershell porque esses comandos criam um caminho personalizado para eles mesmos.

Minhas etapas para resolver são:


Atualizar

O NuGet pode ser facilmente instalado em seu projeto usando o seguinte comando:

Install-Package NuGet.CommandLine

Leonel Sanches da Silva
fonte
O que deve ser inserido como 'Nome da variável'?
Ievgen Naida
1
Tive que colocar o nuget.exe na mesma unidade em que estava executando o comando nuget (e ajustar o valor da variável de ambiente PATH de acordo)
mediafreakch
Você pode ver a variável de ambiente PATH indo para Painel de controle> Sistema> Configurações avançadas do sistema e, em seguida, na janela Propriedades do sistema, clique na guia Avançado e lá você verá o botão "Variáveis ​​de ambiente ...". No grupo Variáveis ​​do sistema, vá encontrar a variável de ambiente PATH. Em seguida, adicione outro caminho delimitando-o com um ponto e vírgula (;).
Jerameel Resco
1
Deve haver algum bug ... Eu recebo, Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'mas quando escrevo NuGet, recebo apenas um erro informando que o comando não existe.
Peter
23
Install-Package NuGet.CommandLineé terrível porque, 1. Adiciona NuGet.CommandLinecomo uma dependência ao meu projeto (eca!), e 2. Isso precisa ser feito separadamente em cada projeto. npmtem uma opção de 'instalação global' - o NuGet não tem algo semelhante !?
BlueRaja - Danny Pflughoeft
60

Existem maneiras muito mais agradáveis ​​de fazer isso.

  1. Instale o pacote Nuget.Build no projeto que deseja compactar. Pode ser necessário fechar e reabrir a solução após a instalação.
  2. Instale o nuget via chocolate - muito mais agradável. Instale chocolatey: https://chocolatey.org/ e execute

    cinst Nuget.CommandLine

em seu prompt de comando. Isso instalará o nuget e configurará os caminhos do ambiente, para que o nuget esteja sempre disponível.

fenix2222
fonte
A menos que você use o npm para instalar o chocolate
Oleg Mihailik de
Depois de não ter sorte com as outras respostas, isso funcionou imediatamente para mim. Chocolatey me poupou de ter que fazer a configuração do PATH manualmente
Sam
47

Em [Package Manager Console]tente o abaixo

Install-Package NuGet.CommandLine
BinSys
fonte
Depois de "Install-Package NuGet.CommandLine", o nuget.exe pode ser executado no PM.
BinSys
13
Executar: o termo 'Executar' não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho foi incluído, verifique se o caminho está correto e tente novamente. VS2015
roubo
Eu tenho o mesmo problema que @rob.
Grant Birchmeier
3
Não digite toda a linha "Execute ...". Basta digitar:Install-Package NuGet.CommandLine
Serj Sagan
Por que, oh, por que o MS faz tudo errado ?! Se eles administrassem usinas nucleares, estaríamos todos mortos! Por que esses comandos essenciais não estão disponíveis e precisam ser baixados separadamente? Obviamente, não é para nos economizar espaço em disco, pois a Microsoft instalará prontamente seu bloatware sempre que tiver oportunidade.
ATL_DEV
17

A ferramenta de linha de comando nuget não vem com o arquivo vsix, é um download separado

https://github.com/nuget/home

Betty
fonte
Esta é a resposta mais correta para esta pergunta específica.
Brady de
12
  • Clique com o botão direito em seu projeto no Solution Explorer .
  • Selecione Gerenciar pacotes NuGet para solução .
  • Pesquise NuGet.CommandLine da Microsoft e instale-o. Pesquisar Nuget.CommandLine
  • Ao concluir a instalação, você encontrará uma pasta chamada pacotes em seu projeto. Vá para o explorador de soluções e procure. pacotes
  • Dentro dos pacotes, procure uma pasta chamada NuGet.CommandLine.3.5.0 , aqui 3.5.0 é apenas o nome da versão, o nome da pasta será alterado de acordo. nuGet COmmand Line
  • Dentro do NuGet.CommandLine.3.5.0, procure uma pasta chamada tools . Ferramentas
  • Dentro das ferramentas, você obterá seu nuget.exe nuget.exe
DeltaCap019
fonte
Ocorreu uma exceção. (Exceção de HRESULT: 0x80020009 (DISP_E_EXCEPTION))
AgentFire
11

No Visual Studio:

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

Na PM:

Install-Package NuGet.CommandLine

Feche o Visual Studio e abra-o novamente.

Kiran Chaudhari
fonte
7

Eu resolvi isso encontrando o nuget.exe e mudando para um caminho fácil de digitar (c: \ nuget \ nuget) e, em seguida, chamando o nuget com esse caminho. Isso parece resolver o problema. c: \ nuget \ nuget no console do gerenciador de pacotes funciona conforme o esperado. Tentei encontrar o caminho que o console estava usando e alterando o caminho do ambiente, mas nunca consegui fazê-lo funcionar dessa forma.

done_merson
fonte
1
Esta deve ser a resposta aceita. Realmente não é mais complicado do que isso!
Florian Winter
Atualização de novembro de 2019 - nuget.exe é o .exe necessário para as ferramentas de linha de comando Nuget (por meio de um console Powershell ou cmd, ou do Console do gerenciador de pacotes Nuget no VS) - consulte aqui docs.microsoft.com/en-us/nuget/ referência /… . Se você não tem, clique
Chris Halcrow
4

Recupere nuget.exede https://www.nuget.org/downloads. Copie-o para uma pasta local e adicione essa pasta à PATHvariável de ambiente.

Isso tornará o nuget disponível globalmente, a partir de qualquer projeto.

misha
fonte
É muito fácil. Crie "c: \ Nuget", vá para as variáveis ​​de ambiente, duplique o caminho, clique em novo, coloque "C: \ Nuget" e pronto. Fazer tudo é visual studio em 2010. Use o Powershell ou a linha de comando.
Nick Turner