如何在Tfs生成中参数化DeployIISAPPATH Msbuild参数

如何在Tfs生成中参数化DeployIISAPPATH Msbuild参数,msbuild,tfsbuild,webdeploy,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:MSDeployP

我正在使用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}"
我需要使用此构建定义使用Web部署部署所有5个站点。它们共享除DeployIisAppPath之外的所有参数。它适用于1个解决方案,但对于1个以上的解决方案,我需要为每个解决方案输入不同的DeployIisAppPath,以便每个解决方案都部署到IIS中的正确站点

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

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


任何帮助都将不胜感激。

实现这一点的可能方法之一是提出您自己的参数集。比如说,我们称它们为
deployiisappath\u One
deployiisappath\u Two
,等等。无论什么名称对您有效,只要它们是唯一的

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

<DeployIisAppPath Condition="'$(DeployIisAppPath_One)' != ''">$(DeployIisAppPath_One)</DeployIisAppPath>

您应该向解决方案中的每个Web项目添加发布配置文件。之后,可以设置以下生成参数:

/p:DeployOnBuild=True
/p:PublishProfile=Development
/p:Password=password-of-your-deploy-user-as-earlier-entered-with-publish-profile
重要的是/p:PublishProfile,这必须是先前创建的发布配置文件的名称。现在,在构建时,MSBuild将查找发布配置文件(在本例中为“开发”),并使用该文件发布网站

完整指南请访问:


希望这有帮助

嗨,这就像一个符咒:-)。感谢您花时间回复。以防有人像我一样遇到此问题,并且正在VS2010而不是2012中工作。我的解决方案是停止重写msbuild参数,只需在web项目属性的“打包/发布web”选项卡中配置它。在“web部署包设置”下有一个名为“要在目标服务器上使用的IIS网站/应用程序名称”的设置。我想知道2012年取消这些设置的理由是什么。
msbuild ... /p:DeployIisAppPath_One="MySite/one" /p:DeployIisAppPath_Two="MySite/two" ...
/p:DeployOnBuild=True
/p:PublishProfile=Development
/p:Password=password-of-your-deploy-user-as-earlier-entered-with-publish-profile