Skip to content

Publish-Module does not work when publishing module with dependencies #74

@jformacek

Description

@jformacek

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions