如何在普通的PowerShell会话中运行Nuget PowerShell cmdlet Install-Package(而不是在Visual Studio内部运行)?

4

我想要做一些自动化的工作,其中一个步骤是为 Visual Studio C# 项目 安装Nuget包。在Visual Studio中,我可以在 Package Manager Console 面板运行命令Install-Package JetBrains.Annotations。然而,在普通的PowerShell会话中,同样的命令不起作用。如何在普通的PowerShell会话中为一个 Visual Studio C# 项目 安装包?


1
如何在CMD / PowerShell中运行NuGet包管理器主机 - zivkan
1
也许你需要的是这样的东西:如何在未连接的机器上安装PowerShell的Nuget提供程序,以便我可以从PS命令行安装nuget包?Powershell安装Nuget包。安装并注册提供程序后,像install-package xxx -source https://www.nuget.org/api/v2这样的简单命令就可以为您安装相应的包。(建议以管理员身份运行) - LoLance
1个回答

2
我会选择使用*-Package cmdlets。我曾经使用NuGet做过一些自动化工作,需要在NuGet CLI和PowerShell *-Package cmdlets之间进行选择。由于nuget list --allversion自2017年2月以来就无法使用了(请参见GitHub ticket),因此我决定使用PowerShell cmdlets。
来自PowerShell docu
PS> Install-Package -Name NuGet.Core -Source MyNuGet -Credential Contoso\TestUser

您可能需要通过 -ProviderName 来定义提供程序名称给 NuGet

指定一个或多个软件包提供程序名称以限定软件包搜索范围。您可以通过运行 Get-PackageProvider 命令来获取软件包提供程序名称。

...

可接受的值:msi、Programs、msu、Bootstrap、PSModule、nuget、chocolatey

我写这篇答案的原因是,尽管这个问题被标记为重复,但 stackoverflow 的答案要么是使用 Visual Studios 内置的管理控制台(它是作为单独的 PowerShell 主机实现的,因此无法通过标准 PowerShell 使用),要么是使用 NuGet CLI 工具(它不能满足我所有的自动化需求)。该答案不涵盖使用 "*-Package`" cmdlet。 更新 1 以下是安装 log4Net NuGet 包的示例:
  Install-Package log4net -ProviderName NuGet -Source https://www.nuget.org/api/v2 -Scope CurrentUser -Force

要获取更多后台安装的信息,您可以使用-Verbose开关。据我所知,您必须使用NuGet的v2 API。

嗨@Moerwald,我成功安装了NuGet.Core。但是我不知道如何使用它来安装软件包。你能给个例子吗? - Just a learner
谢谢更新。我正在尝试它。只是确认一下,命令 Install-Package log4net... 会将log4net安装在当前工作目录的Visual Studio项目中,而不仅仅是安装在计算机上,对吗? - Just a learner
默认情况下,它会将软件包安装在 ~\AppData\Local\PackageManagement\NuGet\Packages\log4net.2.0.8\log4net.2.0.8.nupkg 下,但是 cmldet 有一个 -Destination 参数,可以尝试使用该参数。 - Moerwald
你也可以尝试使用 Powershell 和 Cake(https://cakebuild.net/)混合编程,通过 Cake 执行 Visual Studio 相关操作,并从 Powershell 调用 Cake 的 build.ps1。 - Moerwald
假设NuGet.Core是来自nuget.org的程序包,它的版本是2.14.0,是从Visual Studio 2013中获取的,这就是为什么它不支持v3源,并且将缺少在NuGet 3.x及更高版本中添加的任何功能,例如使用SemanticVersioning的“+build”元数据支持NuGet软件包的特性,因此您将无法通过此方式安装/升级许多软件包的最新版本。 - zivkan

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