【问题标题】:How can I run Nuget PowerShell cmdlet Install-Package in normal PowerShell session (not inside Visual Studio)?如何在正常的 PowerShell 会话中(不在 Visual Studio 中)运行 Nuget PowerShell cmdlet Install-Package?
【发布时间】:2019-11-10 01:14:17
【问题描述】:

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

【问题讨论】:

标签: visual-studio powershell installation nuget nuget-package


【解决方案1】:

我会使用*-Package cmdlet。我已经使用 NuGet 完成了一些自动化工作,我必须在 NuGet CLI 或 PowerShell *-Package cmdlet 之间进行选择。由于 nuget list --allversion 自 2017 年 2 月起无法使用(请参阅 GitHub ticket)。我决定使用 PowerShell cmdlet。

来自PowerShell docu

PS> Install-Package -Name NuGet.Core -Source MyNuGet -Credential Contoso\TestUser

您可能必须通过-ProviderName 将提供程序名称定义为NuGet

指定一个或多个包提供程序名称,以将您的包搜索范围限定在其中。您可以通过运行 Get-PackageProvider cmdlet 获取包提供程序名称。

...

接受的值: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。但我不知道如何使用它来安装软件包。可以举个例子吗?
  • 感谢您的更新。我正在尝试。确认一下,Install-Package log4net... 命令会在当前工作目录中为 Visual Studio 项目安装 log4net,而不仅仅是安装在计算机上,对吧?
  • 默认安装包在~\AppData\Local\PackageManagement\NuGet\Packages\log4net.2.0.8\log4net.2.0.8.nupkg下,但是cmldet有-Destination参数,试试这个。
  • 您还可以尝试与 Powershell 和 Cake (cakebuild.net) 混合使用,通过 cake 完成视觉工作室的工作,并从 Powershell 调用 cakes build.ps1。
  • 假设 NuGet.Core 是来自 nuget.org 的包,它的版本是 2.14.0,来自 Visual Studio 2013,这就是它不支持 v3 提要并且将缺少任何添加的功能的原因在 NuGet 3.x 及更高版本中,例如使用 SemanticVersioning 的 +build 元数据支持 NuGet 包,因此您将无法通过这种方式安装/升级许多包的最新版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 2019-07-09
  • 2018-12-07
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 2019-07-27
相关资源
最近更新 更多