Почему 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
Другие вопросы по тегам