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

Unable to install NuGet package provider in PowerShell Core on Linux

我正在尝试在 PowerShell 7 中的 Linux 上设置 NuGet 包提供程序,以便我可以使用
Install-Package 从 NuGet 库中获取包。但是,当我 运行:

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。 None 这些工作,我仍然每次都遇到同样的错误。 Get-PackageProvider 将 NuGet 列为提供者。

我也无法使用 PowerShell Core 在 Windows 上安装 NuGet 提供程序,但出现同样的错误。这只是 PowerShell Core 不支持吗?

我也收到了这个错误,指定版本(目前是 3.0.0.1)也失败了。对我有用的是将 packageprovider 输送到 Install-PackageProvider

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

如果您想避免对 The package(s) come(s) from a package source that is not marked as trusted. Are you sure you want to install software from ''?

回答是,您可以添加 -Force

除了,我还要配置包源:

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

设置 TLS12 并结合安装 Nuget 包对我有用。

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

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

NuGet 位置已更新。您也可以一行完成:

Register-PackageSource -Name nuget.org -ProviderName NuGet -Location "https://api.nuget.org/v3/index.json" -Trusted