2013-03-26 43 views
4

我有一個簡單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 

任何人都可以告訴我發生了什麼,爲什麼,以及如何獲得我期望的行爲?

回答

11

從這裏http://codebetter.com/jameskovacs/2010/04/12/psake-v4-00/

支持的參數和屬性

調用-psake有兩個新選項,α參數和-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 

所以,你可以任取$配置了性能,並把它作爲一個參數。
還是拿$ DeployBaseDir出的屬性和創建任務模塊

+0

在使用屬性之前,它是PowerShell還是psake的東西?因爲這是一個無賴。 – 2013-03-27 14:28:03

+0

哦,並且將參數中的值放入參數中而不是像屬性一樣工作。謝謝! – 2013-03-27 14:42:03

0

如果你仍然想使用默認值的屬性裏面,在這裏同時使用的參數是樣品如何做。

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測試)。

相關問題