Метод Psake Include не работает

Я пишу простой сценарий PS с помощью Psake, и у меня возникла проблема, когда я пытаюсь включить другой файл ps1.

    PS C:\CI> Include .\EnvSettings.ps1

у меня есть это исключение

Exception calling "Peek" with "0" argument(s): "Stack empty."
At C:\Users\Julien\Documents\WindowsPowerShell\Modules\psake\psake.psm1:227 char:2
+     $psake.context.Peek().includes.Enqueue(($pa));
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException

Я просмотрел строку 227 psake.psm1, чтобы узнать, что происходит вокруг.

# .ExternalHelp  psake.psm1-help.xml
function Include {
    [CmdletBinding()]
    param(
        [Parameter(Position=0,Mandatory=1)][string]$fileNamePathToInclude
    )
    Assert (test-path $fileNamePathToInclude -pathType Leaf) ($msgs.error_invalid_include_path -f $fileNamePathToInclude)
    $psake.context.Peek().includes.Enqueue((Resolve-Path $fileNamePathToInclude));
}

Код успешно проходит строку Assert.

Проблема возникает из-за Resolve-Path $fileNamePathToInclude, он ничего не возвращает... Если я попробую из командной строки, он отлично работает.

Кто-нибудь сталкивался с этой проблемой раньше?


person JuChom    schedule 04.09.2013    source источник


Ответы (1)


Способ включения файла не Include .\EnvSettings.ps1 , а просто "точечный источник" файла :

. .\EnvSettings.ps1
person JPBlanc    schedule 04.09.2013