2017-06-22 155 views
0

我想通過TeamCity和WebDeploy構建和部署ASP.NET Web應用程序。
之前你問 - 我發現了幾個類似的問題,但他們都沒有在我的情況下工作。
我試圖將TeamCity參數傳遞給MsBuild。我有一個構建模板,它將參數定義爲空,然後構建配置覆蓋它們。
試過系統屬性,但它們不適用於我。更糟糕的是,TeamCity不會記錄MsBuild參數值,所以我不能看看它們。
下面是我如何在構建模板中將參數傳遞給MSBuild的示例: /property:MsDeployServiceUrl=https://$(deploy_vm_name):8172/MsDeploy.axd /property:DeployIisAppPath=$(deploy_app_name) /property:SkipExtraFilesOnServer=True /property:UserName=$(deploy_username) /property:Password=$(deploy_password)
根據documentation,語法是正確的。
參數是system.deploy_app_name, system.deploy_username, system.deploy_password, system.deploy_vm_name
我收到的錯誤消息 - C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4115, 5): Invalid Web Deploy service URL
我正在使用TeamCity版本10.0.2與MsBuild版本14.
有什麼建議嗎?我錯過了什麼?如何將TeamCity參數傳遞給MsBuild?

回答

0

我想因爲您在構建步驟中通過參數定義了這些屬性,所以您需要使用典型的%teamcity.parameter%語法,而不是使用$(msbuild_parameter)語法。

或者只是完全跳過在命令行上設置它們。您應該能夠使用$(msbuild_parameter)語法解析MSBuild腳本中來自TeamCity的system.parameters。

從你鏈接的文檔:

對於MSBuild的(Visual Studio的2005/2008項目文件)使用$()。請注意,MSBuild不支持帶點(「。」)的名稱,因此您需要替換「。」。當在構建腳本內使用屬性時使用「_」。

您不在構建腳本中,您在定義屬性參數的腳本之外。

+1

你大部分是正確的,稍後我會發布工作答案和解釋。感謝 – chester89

1

因此正確此舉是爲了明確指定命名的MSBuild參數後的系統參數然後沒有提及的MSBuild步這些參數。我做完之後,一切都很順利。
我認識到它不是非常靈活的解決方案,因爲你可能有幾個MSBuild步驟,但如果有人知道更好的一個 - 請分享它

+0

,我們今天剛剛達到此限制*悲傷的熊貓* – chester89