I have a simple psake script:
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"
}
And I am calling it from the command line like this:
& .\psake.ps1 .\deploy.ps1 -properties @{"Config"="Staging"}
I would expect $DeployBaseDir
to be equal to SOLUTIONDIR\RMSS.Setup.WiX\bin\Staging
But instead, I get this output:
CONFIG = Staging
SOLUTIONDIR = SOLUTIONDIR
DEPLOYBASEDIR = SOLUTIONDIR\RMSS.Setup.WiX\bin\Debug
Can anyone tell me what's happening, why, and how to get the behavior I expect?
From here http://codebetter.com/jameskovacs/2010/04/12/psake-v4-00/
Support for Parameters and Properties
Invoke-psake has two new options, –parameters and –properties. Parameters is a hashtable passed into the current build script. These parameters are processed before any ‘Properties’ functions in your build scripts, which means you can use them from within your Properties.
invoke-psake Deploy.ps1 -parameters @{server=’Server01’}
# Deploy.ps1
properties {
$serverToDeployTo = $server
}
task default -depends All
Parameters are great when you have required information. Properties on the other hand are used to override default values.
invoke-psake Build.ps1 -properties @{config='Release'}
# Build.ps1
properties {
$config = 'Debug'
}
task default -depends All
So you could either take $Config out of the properties and pass it in as a parameter.
Or take the $DeployBaseDir out of the properties and create it inside the task block
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With