如何使用Team Foundation Build 2015部署到特定的Azure虚拟目录

时间:2016-01-26 10:16:32

标签: azure tfsbuild virtual-directory azure-deployment azure-web-app-service

在Azure Web App的应用程序设置中,您可以配置多个虚拟目录和应用程序:

Virtual applications and directories

我有两个Web应用程序项目的解决方案。一个是UI,一个是Web API项目。我希望我在Visual Studio Team Services中的持续集成构建能够将UI部署到站点根目录,并将Web API部署到webapi虚拟目录。

在旧的基于XAML的构建定义中,我的解决方案是使用发布配置文件。然后我会传递MSBuild参数,以便我的发布配置文件用于部署两个应用程序(my approach is explained in this question/answer)。

如果我想手动发布,这些发布配置文件仍然有用;它就像让一个发布配置文件包含<DeployIisAppPath>mysite</DeployIisAppPath>而另一个包含<DeployIisAppPath>mysite/webapi</DeployIisAppPath>一样简单。

但使用新的2015 Team Foundation Build部署步骤更加困难。我现在所拥有的是:

Build definition with two deployment steps

除了webapi部署之外,这种方法非常有效。这一步失败了,抱怨说:

  

找不到网站mysite / webapi。请指定有效的网站名称。

显然mysite/webapi不是我指定要部署的虚拟目录的方式。但我无法弄清楚我应该如何在Azure Web App部署步骤中指定它。有人知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

Microsoft发布了一个允许虚拟目录的新AzureRM Web App Deployment task

答案 1 :(得分:1)

最后,我意识到了一种在短期内实现我想要的明显方法。目前我刚刚在构建中禁用了Azure部署步骤,并修改了实际构建步骤以不发布Web包,而是使用发布配置文件直接部署到Azure。

因此,Visual Studio Build步骤中的MSBuild参数现在如下所示:

/p:DeployOnBuild=true /p:SkipInvalidConfigurations=true /p:PublishProfile=mysiteprofile/p:Password=paswordhashfor$mysite

在Publish-AzureWebSiteProject PowerShell cmdlet允许指定虚拟目录之前,这似乎是我必须要做的。

相关问题