Почему Find-Package не может найти пакет по имени в моем локальном источнике пакетов
У меня есть местный источник пакетов, чтобы возиться с некоторыми вещами. Я создал мозговой пакет под названием CoolUtils
, добавив его с помощью nuget add
, Вы можете найти его, используя nuget:
PS> nuget list -source E:\nuget-repo-test-01\
CoolUtils 2.0.20171024.1
PS> nuget list coolutils -source E:\nuget-repo-test-01\
CoolUtils 2.0.20171024.1
Тем не мение, Find-Package
не может найти его по имени, но может найти его с подстановочными знаками или без указания имени:
PS> Find-Package -Source E:\nuget-repo-test-01\
Name Version Source Summary
---- ------- ------ -------
CoolUtils 2.0.20171024.1 E:\nuget-repo-test-01\ Test package with dumb scripts.
PS> Find-Package *cool* -Source E:\nuget-repo-test-01\
Name Version Source Summary
---- ------- ------ -------
CoolUtils 2.0.20171024.1 E:\nuget-repo-test-01\ Test package with dumb scripts.
PS> Find-Package CoolUtils -Source E:\nuget-repo-test-01\
Find-Package : No match was found for the specified search criteria and package name 'CoolUtils'. Try Get-PackageSource to see all available registered package sources.
At line:1 char:1
+ Find-Package CoolUtils -Source E:\nuget-repo-test-01\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power...ets.FindPackage:FindPackage) [Find-Package], Exception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage
Я также не могу установить его с помощью Install-Package
хотя я могу использовать nuget
,
1 ответ
Командлет Find-Package
является частью модуля PackageManagement, в то время как Nuget.exe
является одним из десятка поставщиков пакетов для PackageManagement
модуль.
Аналогия (не совсем правильная) - это приложение и плагины: Nuget
это как один из плагинов, который обеспечивает функциональность для его приложения (Find-Package
, Install-Package
и другие командлеты из PackageManagement).
Несмотря на Nuget
может выполнять некоторые задачи управления пакетами, чтобы работать под контролем стандартизированных PackageManagement
Команды, которые вы должны правильно объявить ("зарегистрировать") расположение пакетов nuget, чтобы они были известны PackageManagement
:
Register-PackageSource -name MyPackages -location E:\nuget-repo-test-01 -provider Nuget
Сейчас Find-Package
можно искать и Install-Package
Можно установить пакеты из недавно зарегистрированного источника пакетов. Полный список известных источников пакетов можно получить по
Get-PackageSource
У меня возникла та же проблема, и мне удалось решить ее, переместив файл.nupkg в корень зарегистрированного локального источника пакета, то есть "C:\projects\packages\"
PS> Get-PackageSource -Name Local
Name ProviderName IsTrusted Location
---- ------------ --------- --------
Local NuGet False C:\projects\packages\
PS> Find-Package -Source Local -Name TestCmdlet
Name Version Source Summary
---- ------- ------ -------
TestCmdlet 1.0.0 Local Package Description