2014-09-12 52 views
3

我寫了這個劇本TeamCity的不承認參數配置

$xml = New-Object XML 
$xml.Load(".\build\DashboardUITests.dll.config") 
$xml.configuration.appSettings.add |Where-Object {$_.key -eq 'Browser'}|% {$_.value = '%Config_Browser%'} 
$xml.configuration.appSettings.add |Where-Object {$_.key -eq 'Environment'}|% {$_.value = '%Config_Enviroment%'} 
$xml.configuration.appSettings.add |Where-Object {$_.key -eq 'baseUrl'}|% {$_.value = '%Config_URL%'} 
$xml.Save(".\build\DashboardUITests.dll.config") 

,並創造了在我使用的是構建配置這三個構建參數。

Config_Browser = googlechrome 
Config_Enviroment = MyEnviroment 
Config_URL = BigUrl 

目前腳本會顯示這樣的事情在dll.config

<add key="browser" value="%Config_Browser%" /> 

按照TC文件配置參數,無需前綴

「的配置參數(無前綴)沒有被傳遞到構建中,只是爲了在構建配置中共享設置,它們是定製基於模板或使用元運行器的構建配置的主要方式。「

出於某種原因,我的腳本只能識別這些參數,當我的前綴他們與另一個「%」例如

$xml.configuration.appSettings.add |Where-Object {$_.key -eq 'Browser'}|% {$_.value = '%%Config_Browser%'} 

會顯示這樣的事情在dll.config

<add key="browser" value="%%googlechrome%" /> 

爲什麼我的腳本不能識別我創建的參數?

回答

1

我敢打賭,PowerShell管道引起的問題,因爲它也使用%字符。我會嘗試用foreach替換這個別名,而構建配置參數替換應該按預期工作。

+0

幹得好。您的解決方案完美運作 – Pudding 2014-09-12 13:55:22