尝试让PSAKE脚本正常工作。似乎任务没有执行其中的功能?
我有2个文件
-- default.ps1 --
Import-Module "C:\dev\Phoenix\trunk\Build\BuildScripts\include.ps1"
Import-Module "C:\Software\PSAKE\JamesKovacs-psake-b0094de\psake.psm1"
Invoke-psake "C:\dev\Phoenix\trunk\Build\BuildScripts\build.ps1"
remove-module psake
-- build.ps1 --
$framework = '4.0'
properties {
$root_dir = 'c:\dev\Phoenix\trunk\'
$integration_deploy_dir = '\\Server025\Phoenix_IntegrationTests\'
$build_scripts_dir = '$root_dir\Build\BuildScripts'
$test_dir = Join-Path $root_dir '\Tests\Core.UnitTests\bin\Debug'
$dll = Join-Path $test_dir 'Phoenix.Core.UnitTests.dll'
}
task default -depends Test
task MsBuild { exec { msbuild /version }}
task Test -depends Deploy
{
Write-Host "Start task Test"
Add-PSSnapIn Gallio
Write-Host "TEST -- $dll"
Test-Gallio $test_dir Release x64 $dll "Core.UnitTests" ## FYI - call to include func
Write-Host "End task Test"
}
task Deploy
{
Write-Host "Start task deploy"
Write-Host "Deploying to integration server"
copy $root_dir"\Sites" $integration_deploy_dir -Recurse -Force
Write-Host "End task deploy"
}
此刻,它似乎只是“打印出”任务中列出的内容,而实际上并没有做任何事情。我错过了什么?感谢
抱歉忘记提及我真的只想让COPY方法先行 - thx
感谢您的帮助 - 我提出了您的所有建议,但仍然没有运气。
如果我把代码'内联'而不是PSAKE任务中的代码运行正常。
我现在有了这个
-- default.ps1
Import-Module C:\dev\Phoenix\trunk\Build\BuildScripts\include.ps1
Import-Module C:\Software\PSAKE\JamesKovacs-psake-b0094de\psake.psm1
Invoke-psake C:\dev\Phoenix\trunk\Build\BuildScripts\build.ps1
remove-module psake
- build.ps1 $ framework ='4.0'
properties {
$root_dir = 'c:\dev\Phoenix\trunk'
$sites_dir = 'c:\dev\Phoenix\trunk\sites'
$integration_deploy_dir = '\\Vsydnweb025\Phoenix_IntegrationTests\'
$build_scripts_dir = "$root_dir\Build\BuildScripts"
}
task default -depends Deploy
task Deploy
{
Write-Host 'Start task deploy'
Write-Host 'Deploying to integration server'
copy $sites_dir $integration_deploy_dir -Recurse -Force
Write-Host 'End task deploy'
get-childitem $integration_deploy_dir -include *.svclog -recurse | foreach ($_) {remove-item $_.fullname}
}
输出如下:
Write-Host 'Start task deploy'
Write-Host 'Deploying to integration server'
copy $sites_dir $integration_deploy_dir -Recurse -Force
Write-Host 'End task deploy'
get-childitem $integration_deploy_dir -include *.svclog -recurse | foreach ($_) {remove-item $_.fullname}
Build Succeeded!
----------------------------------------------------------------------
Build Time Report
----------------------------------------------------------------------
Name Duration
---- --------
Deploy 00:00:00.0006013
Total: 00:00:02.5335350
因此,任务中的功能似乎正在被打印出来。
复制功能未运行 - 也没有Piped .SvcLog文件删除
即在屏幕上我期待
'启动任务部署'
而不是
写主机'启动任务部署'
我会继续努力让它发挥作用。
感谢您的帮助!!!
答案 0 :(得分:7)
如果在谷歌小组中回答这个问题
开头“{”需要与“任务”功能在同一行 这是一个作为参数传递给“任务”的脚本块 功能。 PS将您的代码解释为2个语句而不是1个 声明。
答案 1 :(得分:1)
我没有对PSAKE做过任何事情,但对于Powershell,以下需要“修复”:
$root_dir = 'c:\dev\Phoenix\trunk\'
删除尾随的'\',当你将这个变量与其他字符串(以'\'开头)连接起来时,你最终会得到一个双'\'。
此外:
$build_scripts_dir = '$root_dir\Build\BuildScripts'
这应该有双引号以确保变量正确扩展:
$build_scripts_dir = "$root_dir\Build\BuildScripts"
也许纠正这些并看看你是否有更多有意义的错误?
我怀疑你还需要删除脚本/模块调用周围的双引号:
Import-Module C:\dev\Phoenix\trunk\Build\BuildScripts\include.ps1
Import-Module C:\Software\PSAKE\JamesKovacs-psake-b0094de\psake.psm1
Invoke-psake C:\dev\Phoenix\trunk\Build\BuildScripts\build.ps1
remove-module psake
...并查看here,了解如何从脚本中调用脚本。您正在使用的双引号将调用转换为字符串(不会执行)。如果你需要使用双引号(即你的路径包含空格),那么你需要在呼叫操作符'&'前面加上路径:
& "C:\dev\Phoenix\trunk\Build\BuildScripts\build.ps1"
显然,你不需要这样做,因为你的路径没有空格。