首页 > 解决方案 > 如何在正常的 PowerShell 会话(不在 Visual Studio 中)运行 Nuget PowerShell cmdlet Install-Package?

问题描述

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

标签: visual-studiopowershellinstallationnugetnuget-package

解决方案


我会使用*-Packagecmdlet。我使用 NuGet 完成了一些自动化工作,我不得不在 NuGet CLI 或 PowerShell *-Packagecmdlet 之间进行选择。由于nuget list --allversion自 2017 年 2 月以来不起作用(请参阅GitHub 票证)。我决定使用 PowerShell cmdlet。

来自PowerShell 文档

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

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

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

...

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

尽管这个问题被标记为重复,但我写这个答案的原因是:

将此问题标记为重复的stackoverflow答案是指使用 Visual Studios 内置的管理控制台(作为单独的 Powershell 主机实现,因此不能通过标准 PowerShell 使用)或通过 NuGet CLI 工具(未涵盖所有我的自动化要求)。此答案未涵盖使用“*-Package” cmdlet。

更新 1

以下是如何安装log4NetNuGet 包的示例:

  Install-Package log4net -ProviderName NuGet -Source https://www.nuget.org/api/v2 -Scope CurrentUser -Force

获取更多信息在后台安装什么,您可以附加-Verbose交换机。

据我所知,您必须使用v2NuGet 的 API。


推荐阅读