我有一个简单的psake脚本:
properties {
$SolutionDir = "SOLUTIONDIR" # Resolve-Path ".\src"
$Config = "Debug"
$DeployBaseDir = "$SolutionDir\RMSS.Setup.WiX\bin\$Config"
$InstallerName = "RMSForMoversSuite_2_0_0"
}
task default -depends Test
task Test {
"CONFIG = $Config"
"SOLUTIONDIR = $SolutionDir"
"DEPLOYBASEDIR = $DeployBaseDir"
}我从命令行调用它,如下所示:
& .\psake.ps1 .\deploy.ps1 -properties @{"Config"="Staging"}
我期望$DeployBaseDir与SOLUTIONDIR\RMSS.Setup.WiX\bin\Staging相等
但是,我得到了下面的输出:
CONFIG = Staging
SOLUTIONDIR = SOLUTIONDIR
DEPLOYBASEDIR = SOLUTIONDIR\RMSS.Setup.WiX\bin\Debug谁能告诉我发生了什么,为什么,以及如何获得我期望的行为?
发布于 2013-03-27 13:18:28
从这里开始http://codebetter.com/jameskovacs/2010/04/12/psake-v4-00/
对参数和属性的支持
Invoke-psake有两个新选项:-parameters和-properties。参数是传递到当前构建脚本中的哈希表。这些参数在构建脚本中的任何“Properties”函数之前被处理,这意味着您可以在Properties中使用它们。
invoke-psake Deploy.ps1 -parameters @{server=’Server01’}
# Deploy.ps1
properties {
$serverToDeployTo = $server
}
task default -depends All当您有所需的信息时,参数非常有用。另一方面,属性用于覆盖默认值。
invoke-psake Build.ps1 -properties @{config='Release'}
# Build.ps1
properties {
$config = 'Debug'
}
task default -depends All因此,您可以将$Config从属性中提取出来,并将其作为参数传递。
或者从属性中取出$DeployBaseDir并在任务块中创建它
发布于 2014-05-20 10:30:21
如果您仍然希望在使用属性的默认值的同时使用参数,这里是示例操作指南。
properties {
$SolutionDir = "SOLUTIONDIR" # Resolve-Path ".\src"
$Config = if($config){$config} else {"Debug"};
$DeployBaseDir = "$SolutionDir\RMSS.Setup.WiX\bin\$Config"
$InstallerName = "RMSForMoversSuite_2_0_0"
}
task default -depends Test
task Test {
"CONFIG = $Config"
"SOLUTIONDIR = $SolutionDir"
"DEPLOYBASEDIR = $DeployBaseDir"
}
& .\psake.ps1 .\deploy.ps1 -parameters @{config="Staging"}(使用psake 4.3.2测试)
这鼓励使用约定而不是配置,让老学生可以继续使用他们的配置意大利面条。
https://stackoverflow.com/questions/15647824
复制相似问题