无法识别“ nuget”,但其他nuget命令有效


112

我正在尝试使用http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory创建一个nuget包 作为参考。我在Visual Studio中的Package Manger Console不允许我使用'nuget'命令。我可以“获取帮助”,它显示:

包括以下NuGet cmdlet。

    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”不能识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重新尝试。

在第1行:char:6 + nuget <<<< + CategoryInfo:ObjectNotFound:(nuget:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

我尝试了以下解决方案:

1>关闭所有项目并重新启动

2>卸载并重新安装

3>创建一个powershell配置文件(此文件以前不存在,实际上破坏了所有内容)

将Visual Studio 2012 Ultimate试用版升级到已注册后,问题开始出现。我最初安装了VS 12 Pro。我不知道这是否与它有任何关系,但我注意到其他有类似问题的人都安装了10和12。

我的问题是“有人知道还有什么可以尝试的吗?” 我的理论是nuget命令的路径丢失了,但是我找不到如何配置程序包管理器控制台使用的路径,而且我不确定cmdlet nuget的实际存储位置。

更新了---尝试按照以下建议下载命令行工具。这导致没有任何工作。我尝试卸载,现在我在vs2010扩展中有一个针对nuget的项目,该项目未启用安装或卸载按钮。这使我相信,这与通过2010年和2012年安装的扩展程序有关,这在我的小戏剧中发挥了作用。如果有人也知道如何删除可卸载的扩展程序,也请告知,但我会尝试另一个问题。


1
您是否启用了UAC,并尝试以管理员身份运行Visual Studio取消扩展的安装?
贝蒂

Install-Package NuGet.CommandLine是正确的答案。
现场直播

@ live-love OP正在尝试创建软件包,而不是安装软件包
Nick Turner

Answers:


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您的项目的文件夹中。它不能直接在Package Manager控制台中执行,而是由Powershell命令执行,因为这些命令会为其自身构建自定义路径。

我要解决的步骤是:


更新资料

使用以下命令可以轻松地将NuGet安装在您的项目中:

安装包NuGet.CommandLine


应该输入什么作为“变量名”?
Ievgen Naida 2014年

1
我必须将nuget.exe与运行nuget命令的位置放在同一驱动器上(并相应地调整PATH环境变量值)
mediafreakch 2014年

通过转到控制面板>系统>高级系统设置,然后在“系统属性”窗口中,单击“高级”选项卡,您将看到PATH环境变量,然后您将看到“环境变量...”按钮。在系统变量组下,找到PATH环境变量。然后,用分号(;)分隔来添加另一条路径。
Jerameel Resco 2015年

1
肯定有一些错误。...我得到了,Package 'NuGet.CommandLine.3.3.0' already exists in project 'TimeLoop'但是当我编写NuGet时,我得到的是该命令不存在的错误。
彼得

23
Install-Package NuGet.CommandLine之所以如此糟糕是因为:1.它添加NuGet.CommandLine了对我项目的依赖(ew!),并且2.需要在每个项目中单独完成。 npm有一个'global install'选项-NuGet没有类似的东西吗?
BlueRaja-Danny Pflughoeft

60

有很多更好的方法可以做到这一点。

  1. 在要打包的项目中安装Nuget.Build软件包。安装后可能需要关闭并重新打开解决方案。
  2. 通过Chocolatey安装nuget-更好。安装Chocolatey:https : //chocolatey.org/,然后运行

    cinst Nuget.CommandLine

在命令提示符下。这将安装nuget和设置环境路径,因此nuget始终可用。


除非您使用npm来安装巧克力,否则不要
这么做

在其他答案没有运气之后,这立即对我起作用。Chocolatey节省了我手动设置PATH的麻烦
山姆

47

[Package Manager Console]下面尝试

Install-Package NuGet.CommandLine

在“ Install-Package NuGet.CommandLine”之后,可以在PM中执行Nuget.exe。
BinSys 2014年

13
执行:术语“执行”不被视为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。VS2015
抢劫

我遇到了与@rob相同的问题。
Grant Birchmeier

3
不要键入整个“ Execute ...”行。只需键入:Install-Package NuGet.CommandLine
Serj Sagan

为什么哦,为什么MS会做所有错误的事情?如果他们经营核电站,我们所有人都将丧命!为什么这些关键命令不可用并且必须单独下载?显然,这并不是要节省我们的驱动器空间,因为只要有机会,Microsoft就会随时安装其bloatware。
ATL_DEV


12
  • 解决方案资源管理器中右键单击您的项目。
  • 选择管理解决方案的NuGet软件包
  • 通过Microsoft 搜索NuGet.CommandLine并安装它。 搜索Nuget.CommandLine
  • 完成安装后,您将在项目中找到一个名为packages的文件夹。转到解决方案资源管理器并寻找它。 包装
  • 在包内查找名为NuGet.CommandLine.3.5.0的文件夹,此处3.5.0只是版本名称,您的文件夹名称将相应更改。 nuGet命令行
  • NuGet.CommandLine.3.5.0中,查找名为tools的文件夹。 工具
  • 在内部工具中,您将获得nuget.exe nuget.exe

发生异常。(来自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可以正常工作。我试图找到控制台正在使用的路径并更改环境路径,但始终无法使其以这种方式工作。


1
这应该是公认的答案。真的没有比这更复杂!
弗洛里安冬季

2019年11月更新-nuget.exe是Nuget命令行工具所需的.exe(通过Powershell或cmd控制台或VS中的Nuget软件包管理器控制台)-请参阅此处docs.microsoft.com/zh-cn/nuget/参考/…。如果您没有它,请点击这里-nuget.org/downloads
Chris Halcrow

4

nuget.exe从中检索https://www.nuget.org/downloads。将其复制到本地文件夹,然后将该文件夹添加到PATH环境变量中。

这将使nuget可以从任何项目在全球范围内使用。


就这么简单。创建“ c:\ Nuget”,然后转到环境变量,双击“路径”,单击“新建”,放入“ C:\ Nuget”,您就完成了。Visual Studio要做的一切都是2010年。使用Powershell或命令行。
尼克·特纳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.