PowerShell NuGet - “找不到指定搜索条件的匹配项”,“无法找到依赖包”等

时间:2018-02-21 18:58:37

标签: powershell package nuget jwt

我正在尝试安装程序集System.IdentityModel.Tokens.Jwt,但我不断遇到nuget错误:

find-package : No match was found for the specified search criteria and package name 'System.IdentityModel.Tokens.Jwt'. Try Get-PackageSource to see all available registered package sources.

当我直接下载.nupkg文件并尝试以这种方式安装时,我收到以下错误:

Install-Package : Unable to find dependent package(s) (Microsoft.IdentityModel.Tokens)

我做错了什么?我通常是一个linux用户,所以我的直觉是我缺少适当的存储库,但我无法弄清楚如何解决这个问题。

3 个答案:

答案 0 :(得分:3)

这很难找到,但这是我的解决方案。如果Get-PackageSource告诉您没有将NuGet注册为程序包源,那么我们首先将其注册:

Register-PackageSource -provider NuGet -name nugetRepository -location https://www.nuget.org/api/v2

之后,它应该可以工作了。

我遇到了另一个问题,我确实已经注册了NuGet,但是显然,当我已经注册了v3时,此Powershell命令行开关希望可以与NuGet的v2 API版本一起使用。有两种解决方案:为此重新注册正确的版本

Unregister-PackageSource -Name nuget.org(首先检查名称),然后使用我已经编写的命令注册正确的版本,或者在“查找”(和其他)命令中明确指定正确的API版本:

Find-Package System.IdentityModel.Tokens.Jwt -Source https://www.nuget.org/api/v2。有一个issue on Gihub应该可以解决的。

答案 1 :(得分:0)

这对我有用:

$_nugetUrl = "https://api.nuget.org/v3/index.json" 
$packageSources = Get-PackageSource
if(@($packageSources).Where{$_.location -eq $_nugetUrl}.count -eq 0)
{
   Register-PackageSource -Name MyNuGet -Location $_nugetUrl -ProviderName NuGet
}

答案 2 :(得分:0)

在 pwsh(powershell 核心)上,您可以将 -Source 参数中必要的包源 URL 传递给 Install-Package 命令。

这样您就不必注册全局包源。

示例:

Install-Package -Force Microsoft.Azure.Kusto.Tools.NETCore `
                -Destination "/tmp/mypackages" `
                -Source "https://api.nuget.org/v3/index.json"