PowerShell/PowerShellGet

Publish-Module does not work when publishing module with dependencies

jformacek opened this issue · 0 comments

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

Trying to publish module with dependency on other module via Publish-Module -Path xxx -NuGetApiGey yyy
Getting error:
ValidateAndGet-RequiredModuleDetails: The property 'Name' cannot be found on this object. Verify that the property exists.

Seems that problem is in PSModule.psm1:8112:

$RequiredModuleDetails += @{
                                            Name=$_.Name
                                            MinimumVersion=$_.Version
                                       }

variable $_ seems not to have value. Instead, there should be something like:

$RequiredModuleDetails += @{
                                            Name=$psgetItemInfo.Name
                                            MinimumVersion=$psgetItemInfo.Version
                                       }

Expected behavior

Publish-Module is able to publish module with dependencies.

Actual behavior

Publish-Module returns error "ValidateAndGet-RequiredModuleDetails: The property 'Name' cannot be found on this object. Verify that the property exists." when publishing module with dependencies

Error details

get-error

Exception             :
    Type        : System.Management.Automation.PropertyNotFoundException
    ErrorRecord :
        Exception             :
            Type    : System.Management.Automation.ParentContainsErrorRecordException
            Message : The property 'Name' cannot be found on this object. Verify that the property exists.
            HResult : -2146233087
        CategoryInfo          : NotSpecified: (:) [], ParentContainsErrorRecordException
        FullyQualifiedErrorId : PropertyNotFoundStrict
        InvocationInfo        :
            ScriptLineNumber : 8112
            OffsetInLine     : 13
            HistoryId        : 2
            ScriptName       : C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1
            Line             : $RequiredModuleDetails += @{

            Statement        : $RequiredModuleDetails += @{
                               Name=$_.Name
                               MinimumVersion=$_.Version
                               }
            PositionMessage  : At C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1:8112 char:13
                               +             $RequiredModuleDetails += @{
                               +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            PSScriptRoot     : C:\program files\powershell\7\Modules\PowerShellGet
            PSCommandPath    : C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1
            CommandOrigin    : Internal
        ScriptStackTrace      : at ValidateAndGet-RequiredModuleDetails, C:\program
files\powershell\7\Modules\PowerShellGet\PSModule.psm1: line 8112
                                at Get-ModuleDependencies, C:\program
files\powershell\7\Modules\PowerShellGet\PSModule.psm1: line 1935
                                at Publish-PSArtifactUtility, C:\program
files\powershell\7\Modules\PowerShellGet\PSModule.psm1: line 5923
                                at Publish-Module<Process>, C:\program
files\powershell\7\Modules\PowerShellGet\PSModule.psm1: line 10990
                                at <ScriptBlock>, <No file>: line 1
    TargetSite  :
        Name          : CheckActionPreference
        DeclaringType : [System.Management.Automation.ExceptionHandlingOps]
        MemberType    : Method
        Module        : System.Management.Automation.dll
    Message     : The property 'Name' cannot be found on this object. Verify that the property exists.
    Data        : System.Collections.ListDictionaryInternal
    Source      : System.Management.Automation
    HResult     : -2146233087
    StackTrace  :
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception
exception)
   at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
   at System.Management.Automation.PSScriptCmdlet.RunClause(Action`1 clause, Object dollarUnderbar, Object
inputToProcess)
   at System.Management.Automation.CommandProcessorBase.Complete()
CategoryInfo          : NotSpecified: (:) [], PropertyNotFoundException
FullyQualifiedErrorId : PropertyNotFoundStrict
InvocationInfo        :
    ScriptLineNumber : 8112
    OffsetInLine     : 13
    HistoryId        : 2
    ScriptName       : C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1
    Line             : $RequiredModuleDetails += @{

    Statement        : $RequiredModuleDetails += @{
                       Name=$_.Name
                       MinimumVersion=$_.Version
                       }
    PositionMessage  : At C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1:8112 char:13
                       +             $RequiredModuleDetails += @{
                       +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    PSScriptRoot     : C:\program files\powershell\7\Modules\PowerShellGet
    PSCommandPath    : C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1
    CommandOrigin    : Internal
ScriptStackTrace      : at ValidateAndGet-RequiredModuleDetails, C:\program
files\powershell\7\Modules\PowerShellGet\PSModule.psm1: line 8112
                        at Get-ModuleDependencies, C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1:
line 1935
                        at Publish-PSArtifactUtility, C:\program
files\powershell\7\Modules\PowerShellGet\PSModule.psm1: line 5923
                        at Publish-Module<Process>, C:\program files\powershell\7\Modules\PowerShellGet\PSModule.psm1:
line 10990
                        at <ScriptBlock>, <No file>: line 1

Environment data

$PSVersionTable

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

Version

PS Core 7.4.5

Visuals

No response