Publish-PSArtifactUtility не может разрешить зависимость модуля при публикации, даже если они находятся в одном фиде. - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь опубликовать модуль PowerShell в артефактах Azure, который зависит от другого модуля, размещенного в том же фиде артефактов.Идея состоит в том, что когда я устанавливаю модуль локально из канала, правильная версия зависимости устанавливается автоматически.Проблема в том, что при запуске:

Publish-Module -NuGetApiKey "{token}" -Path {path} -Repository "{ArtifactsFeedName}" -Verbose -ErrorAction Stop

я получаю следующую ошибку:

 Publish-PSArtifactUtility : PowerShellGet cannot resolve the module dependency '{dependency}' of the module 
 '{moduleWhichHasDependency}' on the repository '{ArtifactsFeed}'. Verify that the dependent module '{dependency}' 
 is available in the repository '{ArtifactsFeed}'. If this dependent module '{dependency}' is managed externally, 
 add it to the ExternalModuleDependencies entry in the PSData section of the module manifest.
 At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1190 char:17
 +                 Publish-PSArtifactUtility -PSModuleInfo $moduleInfo `
 +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Publish-PSArtifactUtility], InvalidOperationException
+ FullyQualifiedErrorId : UnableToResolveModuleDependency,Publish-PSArtifactUtility

В манифесте зависимость добавляется следующим образом:

 RequiredModules = @( @{ModuleName = '{dependency}'; ModuleVersion = '1.0.4'; })

Затем я попытался добавить:

ExternalModuleDependencies = @( @{ModuleName = '{dependency}'; ModuleVersion = '1.0.4'; })

Модуль опубликован, но при локальной установке он не устанавливает зависимость.

1 Ответ

0 голосов
/ 19 июля 2019

Эта проблема, кажется, была исправлена ​​в последней версии PowershellGet (2.2 в PSGallery, версия, установленная на моем компьютере, была 1.0.1). Вы также можете установить последнюю версию PackageManagement (1.4.3 против 1.0.1)

См .:

Добавлен параметр учетных данных для последующих вызовов Publish-Module / Script. # 93 https://github.com/PowerShell/PowerShellGet/pull/93

Реализация распространения параметров учетных данных модуля публикации в подфункции # 104 https://github.com/PowerShell/PowerShellGet/pull/104

Для этого:

Install-Module PowershellGet -Force #-Scope Current #if you don't want to login as Administrator

Однако у меня есть к вам вопрос: как вам удается не передавать свои учетные данные, когда вы вызываете Publish-Module с фидом артефактов Azure? Я знаю, что они должны храниться в файле nuget.config, но я должен давать их каждый раз.

Publish-Module -NuGetApiKey "{whatever}" -Credentials "{PSCredentials object}" -Path {path} -Repository "{ArtifactsFeedName}" -Verbose -ErrorAction Stop
...