Asp.net 如何将TeamCity参数传递给MsBuild?

Asp.net 如何将TeamCity参数传递给MsBuild?,asp.net,.net,msbuild,teamcity,webdeploy,Asp.net,.net,Msbuild,Teamcity,Webdeploy,我正在尝试通过TeamCity和WebDeploy构建和部署ASP.NET web应用程序。 在你提问之前,我发现了几个类似的问题,但它们都不适用于我的情况。 我正在尝试将TeamCity参数传递给MsBuild。我有一个构建模板,它将参数定义为空,然后构建配置覆盖它们。 尝试了系统属性,但对我无效。更糟糕的是,TeamCity不记录MsBuild参数值,所以我无法查看它们。 以下是如何在生成模板中将参数传递给MSBuild的示例: /属性:MsDeployServiceUrl=https://

我正在尝试通过TeamCity和WebDeploy构建和部署ASP.NET web应用程序。 在你提问之前,我发现了几个类似的问题,但它们都不适用于我的情况。 我正在尝试将TeamCity参数传递给MsBuild。我有一个构建模板,它将参数定义为空,然后构建配置覆盖它们。 尝试了系统属性,但对我无效。更糟糕的是,TeamCity不记录MsBuild参数值,所以我无法查看它们。 以下是如何在生成模板中将参数传递给MSBuild的示例: /属性:MsDeployServiceUrl=https://$deploy\u vm\u name:8172/MsDeploy.axd/property:deployiisappath=$deploy\u app\u name/property:SkipExtraFilesOnServer=True/property:UserName=$deploy\u UserName /属性:Password=$deploy\u Password。 根据,语法是正确的。 参数包括system.deploy\u应用程序名称、system.deploy\u用户名、system.deploy\u密码、system.deploy\u vm\u名称。 我收到的错误消息为-C:\Program Files x86\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets4115,5:无效的Web部署服务URL。 我正在使用TeamCity版本10.0.2和MsBuild版本14。
有什么建议吗?我遗漏了什么?

我认为,因为在生成步骤中通过参数定义这些属性,所以需要使用典型的%teamcity.parameter%语法,而不是$msbuild\u参数语法

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

从您链接的文档中:

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


您不在生成脚本内,而是在定义属性参数的脚本外。

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

您基本上是对的,稍后我将发布工作答案并进行解释。谢谢,我们今天刚刚达到了这个极限