如何将TeamCity参数传递给MsBuild?

时间:2017-06-22 07:43:08

标签: asp.net .net msbuild teamcity webdeploy

我尝试通过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)
根据{{​​3}},语法是正确的。
参数为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一起使用。
有什么建议?我错过了什么?

2 个答案:

答案 0 :(得分:1)

因此,正确的方法是指定系统参数在MSBuild参数之后命名,然后在MSBuild步骤中不提及这些参数。在我这样做之后,一切都很好。
我认识到它不是非常灵活的解决方案,因为你可能有几个MSBuild步骤,但如果有人知道更好的一个 - 请分享它

答案 1 :(得分:0)

我认为,因为您在构建步骤中通过参数定义了这些属性,所以您需要使用典型的%teamcity.parameter%语法,而不是使用$(msbuild_parameter)语法。

或者只是完全跳过在命令行上设置它们。您应该能够使用$(msbuild_parameter)语法在MSBuild脚本中解析TeamCity中的system.parameters。

来自您关联的文档:

  

对于MSBuild(Visual Studio 2005/2008项目文件),使用$()。请注意,MSBuild不支持带点的名称("。"),因此您需要替换"。"用" _"在构建脚本中使用属性时

您不在构建脚本中,而是在定义属性参数的脚本之外。