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

How to deploy to a specific Azure virtual directory with Team Foundation Build 2015

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

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

在旧的基于 XAML 的构建定义中,我的解决方案是使用发布配置文件。然后我将传递 MSBuild 参数,以便我的发布配置文件将用于部署这两个应用程序 ()。

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

一样简单

但事实证明,使用新的 2015 Team Foundation Build 部署步骤更加困难。我现在有的是:

除了 webapi 部署外,这工作得很好。此步骤失败,抱怨:

The website mysite/webapi was not found. Please specify a valid website name.

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

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

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

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

这似乎是我必须要做的事情,直到 Publish-AzureWebSiteProject PowerShell cmdlet 允许指定虚拟目录。

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