在Linux上的PowerShell Core无法安装NuGet包提供程序

8

我正在尝试在PowerShell 7上设置NuGet包提供程序,以便可以使用Install-Package从NuGet Gallery获取软件包,但是当我运行以下命令时:

Install-PackageProvider -Name NuGet -Force

我遇到了以下错误:
Install-PackageProvider: No match was found for the specified search criteria for the provider 'NuGet'.
The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified
package has the tags.

我进行了一些搜索,并在这个网站和其他地方找到了一些相关的问题,一些答案称我需要强制使用TLS 1.2:

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

一些人建议在Install-PackageSource 上指定 -RequiredVersion, 一些人建议使用 -ForceBootstrap, 还有一些人建议使用 -Force. 然而这些都不起作用,每次仍然遇到同样的错误。 Get-PackageProvider 列出了 NuGet 作为提供程序。
我在使用 PowerShell Core 在 Windows 上安装 NuGet 提供程序时也遇到了相同的错误,这是因为 PowerShell Core 不支持吗?
4个回答

8

我也遇到了这个错误,指定版本(目前为3.0.0.1)也失败了。对我有用的是将包提供程序输入管道中的 Install-PackageProvider

Get-PackageProvider | where name -eq 'nuget' | Install-PackageProvider

如果你不想回答“包来自未标记为受信任的软件源,确定要安装软件吗?”的问题,可以添加 -Force 参数。


2
谢谢,这让我完成了一半的安装包所需的步骤。一旦我安装了提供程序,我还需要注册软件包源。 - codewario
1
感谢您分享这些信息。未来的读者会感激您的。 - Doug Maurer
2
运行 Get-PackageProvider | where name -eq 'nuget' | Install-PackageProvider -Force 命令时,我遇到了以下错误:_"Install-PackageProvider: Value cannot be null. (Parameter 'input')"_。如果不加上 -Force 参数,命令可以正常执行,但会弹出确认提示框。 - soulflyman

4
NuGet位置已更新。您也可以一行完成:
Register-PackageSource -Name nuget.org -ProviderName NuGet -Location "https://api.nuget.org/v3/index.json" -Trusted

1
我知道了。Register-PackageSource:无法找到软件包提供程序(NuGet)。 - Will Huang

3

我使用TLS12并安装Nuget包解决了这个问题。

下面是我的命令使用方式:

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet

2

除了@DougMaurer的答案之外,我还必须配置软件包源:

$sourceArgs = @{
  Name = 'nuget.org'
  Location = 'https://api.nuget.org/v3/index.json'
  ProviderName = 'NuGet'
}
Register-PackageSource @sourceArgs

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