我正在尝试安装程序集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用户,所以我的直觉是我缺少适当的存储库,但我无法弄清楚如何解决这个问题。
答案 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"