"nuget"未被识别,但其他nuget命令可以正常工作

166

我正在尝试创建一个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 cmdlets。

    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行第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 cmdlet实际上存储在哪里。

更新--尝试按照下面的建议下载命令行工具。这导致一切都不起作用了。我试图卸载,现在我在vs2010扩展中有一个关于nuget的项目,但未启用安装或卸载按钮。这让我相信,它与通过2010和2012安装的扩展有关。如果还有人知道如何删除无法卸载的扩展,请告诉我,但我会为此提出另一个问题。


1
你的UAC是否已启用?你尝试以管理员身份运行Visual Studio来卸载扩展了吗? - Betty
1
安装NuGet.CommandLine包是正确的答案。 - live-love
@live-love,OP 正在尝试创建一个包而不是安装一个包。 - Nick Turner
这可能会有所帮助 - stackoverflow链接 - Varun
13个回答

183
Nuget.exe被放置在您的项目的“.nuget”文件夹中。它不能直接在包管理器控制台中执行,但是通过PowerShell命令执行,因为这些命令为自己构建了自定义路径。
我解决问题的步骤是:

更新

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

Install-Package 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 时,我只会得到一个命令不存在的错误。 - Peter
@Peter 你可以卸载这个版本(显然是昨天发布的),并且使用这个版本 - Leonel Sanches da Silva
31
“Install-Package NuGet.CommandLine” 很糟糕,因为:1.它将 NuGet.CommandLine 添加为我的项目依赖项(呸!),2.需要在每个项目中单独完成安装。npm 有一个“全局安装”选项 - NuGet 没有类似的东西吗? - BlueRaja - Danny Pflughoeft
显示剩余6条评论

95

[包管理器控制台]中尝试以下操作

Install-Package NuGet.CommandLine

在执行了“Install-Package NuGet.CommandLine”之后,就可以在PM中执行nuget.exe。 - BinSys
13
执行:无法识别“Execute”为 cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包括路径,请验证路径是否正确,然后重试。VS2015 - rob
3
不需要输入整个 "Execute ..." 行,只需键入:Install-Package NuGet.CommandLine - Serj Sagan
`Install-Package : Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations. At line:1 char:1
  • Install-Package NuGet.CommandLine
  • + CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException + FullyQualifiedErrorId : NuGetMissingPackages,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
PM> `
- boatcoder
1
安装后仍然无法正常工作。 - Ap0st0l

68

有更好的方法来完成这项任务。

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

    cinst Nuget.CommandLine

在命令提示符中执行此操作。这将安装nuget并设置环境路径,因此始终可以使用nuget。


除非您使用npm安装chocolatey,否则不行。 - Oleg Mihailik
1
在尝试其他答案无果后,这个方法对我来说立刻奏效了。Chocolatey让我免去了手动配置路径的麻烦。 - Sam
3
使用最新版本的Chocolatey,可以执行choco install Nuget.CommandLine命令。 - Dariusz Woźniak

33
你也可以尝试将系统变量路径设置为你的nuget.exe位置,并重新启动VS。
  1. 打开系统的PATH变量,并添加你的nuget.exe的位置(对于我来说,这是:C:\Program Files (x86)\NuGet\Visual Studio 2013
  2. 重启Visual Studio
我本来想把这个作为评论发给你answer @done_merson,但我没有足够的声望。

22

在Visual Studio中:

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

在私信中:

Install-Package NuGet.CommandLine

关闭 Visual Studio,然后重新打开。


安装包:添加引用失败。软件包“NuGet.CommandLine”尝试向“Microsoft.Build.Utilities.v4.0”添加框架引用,但在GAC中未找到该引用。这可能是软件包中的错误,请联系软件包所有者寻求帮助。 引用不可用。 - Markus

20

这是对于这个特定问题最正确的答案。 - Brady

13
  • 解决方案资源管理器中右键单击您的项目。
  • 选择管理解决方案的NuGet程序包
  • 搜索Microsoft的NuGet.CommandLine并安装它。 Search Nuget.CommandLine
  • 安装完成后,您将在项目中找到一个名为packages的文件夹。转到解决方案资源管理器并查找它。 packages
  • packages中查找名为NuGet.CommandLine.3.5.0的文件夹,这里的3.5.0只是版本名称,您的文件夹名称将相应更改。 nuGet COmmand Line
  • NuGet.CommandLine.3.5.0中查找名为tools的文件夹。 tools
  • tools中,您将找到您的nuget.exenuget.exe

发生异常。(HRESULT 异常: 0x80020009 (DISP_E_EXCEPTION)) - AgentFire

13
从 https://www.nuget.org/downloads 下载 nuget.exe,将其复制到本地文件夹并将该文件夹添加到 PATH 环境变量中。这样可以使 nuget 在任何项目中全局可用。

这很简单。创建“c:\Nuget”,然后进入环境变量,双击Path,点击New,输入“C:\Nuget”,完成。在Visual Studio 2010中完成所有操作。使用Powershell或命令行。 - Nick Turner
更改路径后应重新启动 Visual Studio,否则无法识别。 - OfirD

9

我通过找到 nuget.exe 并将其移动到易于输入的路径 (c:\nuget\nuget),然后使用该路径调用 nuget,解决了这个问题。这似乎解决了问题。 在包管理器控制台中使用 c:\nuget\nuget 可以正常工作。 我尝试查找控制台正在使用的路径并更改环境路径,但无法以那种方式使其工作。


2
这应该是被接受的答案。它真的没有比这更复杂! - Florian Winter
1
更新于2019年11月 - nuget.exe是Nuget命令行工具所需的.exe文件(通过PowerShell或cmd控制台,或在VS中的Nuget包管理器控制台中使用)-请参见此处https://learn.microsoft.com/en-us/nuget/reference/nuget-exe-cli-reference。如果您没有它,请在此处获取 - https://www.nuget.org/downloads - Chris Halcrow

7

请按照以下步骤操作。

  1. 在 Visual Studio 中,转到“工具”→“NuGet 包管理器”→“包管理器控制台”。

  2. 运行以下命令:

    Install-Package NuGet.CommandLine

  3. 关闭 Visual Studio 并重新打开。

  4. 重复第1步。

  5. 执行您的 nuget 命令,例如:nuget push C:\Users\syaads\Debug\Library.1.0.32.nupkg -Source Artifactory


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接