Команда Powershell Find-Package не работает с источником пакета nuget v3

Как видно из названия, я не могу использовать команду Find-Package с URL-адресом nuget v3:

https://api.nuget.org/v3/index.json

Если я запустил команду:

Find-Package nuget.versioning -Source https://api.nuget.org/v3/index.json

Я получаю сообщение об ошибке, что совпадение не найдено. Изменение команды на:

Find-Package nuget.versioning -Source https://www.nuget.org/api/v2

Работает отлично.

Нужно ли мне обновить какое-то программное обеспечение, чтобы это работало? Я использую Powershell версии 5, поэтому не знаю, какие шаги нужно предпринять, чтобы это исправить.


person Spencer Ruport    schedule 25.01.2019    source источник
comment
Я считаю, что в модуле PackageManagement есть исправление. Вы можете попробовать обновить это, но я помню, что поставляемый модуль не поддерживает v3 nuget.   -  person Maximilian Burszley    schedule 25.01.2019


Ответы (1)


С Powershell 5.1 это не так, как вы описали. Но с PowerShell Core 7 он работает правильно:

PS> Find-Package nuget.versioning -Source https://api.nuget.org/v3/index.json -ProviderName NuGet

Name                           Version          Source           Summary
----                           -------          ------           -------
NuGet.Versioning               4.6.4            nuget.org        NuGet's implementation of Semantic Versioning.

Обратите внимание, что вы можете проверить свою версию PowerShell с помощью переменной PSVersionTable:

PS> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.0.0
PSEdition                      Core
GitCommitId                    7.0.0
OS                             Microsoft Windows 10.0.18362
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

В PowerShell Core 7 вы увидите, что он использует версию 3 поставщика пакетов NuGet, поэтому он поддерживает протокол v3.

PS> Get-PackageProvider

Name                     Version          DynamicOptions
----                     -------          --------------
NuGet                    3.0.0.1          Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains, AllowPrereleaseVersions, ConfigFile, SkipValidate
PowerShellGet            2.2.3.0          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpdate, NoPathUpdate, AllowPrereleaseVersions, Filter, Tag, Includes, DscResource, RoleCapability, Command, Accep…
person mabead    schedule 12.04.2020