如何在Tfs Build中参数化DeployIisAppPath Msbuild参数

art*_*dev 4 msbuild tfsbuild webdeploy

我正在使用Tfs 2012来构建/部署我们的Asp.Net Web应用程序.我们有一个构建定义,可构建5个解决方案(.sln文件).这就是我们的MsBuild参数的样子:

/p:DeployOnBuild=True /p:AllowUntrustedCertificate=True /p:DeployIisAppPath="Test"         /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC /p:MSDeployServiceUrl="https://{server}:8172/msdeploy.axd" /p:UserName="{user}" /p:Password="{password}"
Run Code Online (Sandbox Code Playgroud)

我需要使用此构建定义使用Web Deploy部署所有5个站点.它们共享除DeployIisAppPath之外的所有参数.它适用于1个解决方案,但是对于1个以上的解决方案,我需要为每个解决方案输入不同的DeployIisAppPath,以便每个解决方案都部署到IIS中的正确站点.

我已经检查了这些问题和其他文档,但还没有运气:

针对具有不同构建参数的多个项目运行构建

在解决方案中持续部署多个网站项目

如何将TFS变量传递给项目的MSBuild任务

TFS2010构建定义以部署到多个服务器?

我已经尝试将参数作为属性传递给每个sln的{siteName} .Web.csproj作为属性.

任何帮助将不胜感激.

sev*_*tov 5

其中一种可能的方法是提出自己的一组参数.让我们说,我们叫他们DeployIisAppPath_One,DeployIisAppPath_Two等无论名称为你工作,只要它们是唯一的.

然后,在需要部署的每个项目文件中进行小编辑.在第一<PropertyGroup>部分中,添加以下行.例如,在第一个项目中,添加

<DeployIisAppPath Condition="'$(DeployIisAppPath_One)' != ''">$(DeployIisAppPath_One)</DeployIisAppPath>
Run Code Online (Sandbox Code Playgroud)

在第二个项目中,simalarly:

<DeployIisAppPath Condition="'$(DeployIisAppPath_Two)' != ''">$(DeployIisAppPath_Two)</DeployIisAppPath>
Run Code Online (Sandbox Code Playgroud)

对要部署的所有项目重复此操作.现在,您的新命令行将如下所示:

msbuild ... /p:DeployIisAppPath_One="MySite/one" /p:DeployIisAppPath_Two="MySite/two" ...
Run Code Online (Sandbox Code Playgroud)