使用visual studio团队服务构建包含多个Web应用程序的解决方案,并将这些Web应用程序部署到azure

Mic*_*ulz 12 asp.net azure azure-devops

我的团队使用Visual Studio Team Services来管理TFS存储库中的源代码.该解决方案包含多个Web应用程序 我正在尝试为此解决方案配置持续集成和持续部署,以便在成功构建后将每个Web应用程序部署到正确的Azure Web应用程序.我已经将BuildDefinition配置为构建$/MyProduct/MAIN/MySolution.sln.我已根据我在此主题上找到的一些MSDN文章为MSBuild定义了以下参数:

/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:PackageLocation="$(build.stagingDirectory)" 
Run Code Online (Sandbox Code Playgroud)

构建步骤包括Visual Studio构建步骤,Visual Studio测试步骤(当前禁用以最小化复杂性),索引源和发布符号步骤(我认为我不需要),最后是复制和发布构建文物步骤.

我可以使用此配置构建此解决方案.我可以看到构建结果,构建日志,构建细节等.当我查看创建的工件时,我看到两个工件:"drop"和"build.sourceLabel"如果我使用Artifacts Explorer浏览drop文件,我在这个drop文件中找到了我的所有项目,对于web应用程序项目,我可以导航到webapp1\obj\QA\Package\PackageTemp\bin文件夹,并查看Web应用程序的所有DLL等.

我没有看到的是每个Web应用程序的一个zip文件,这是Visual Studio Team Services的Release功能所期望的.

我想知道如何修改我当前的配置,以便我可以从Build步骤生成正确的工件,这样我就可以创建正确的Release Wep App Deployment任务,将每个Web应用程序部署到我环境中正确的Web应用程序.

这一切都是使用Visual Studio 2015和Visual Studio Online(团队服务)完成的.

小智 22

为了测试您的情况,我使用了Visual Studio 2015并在同一解决方案中创建了3个新的Web项目并检入了VSTS.然后,我使用Azure网站部署模板创建了一个新版本.很多人都想念我们在Create New Build Definition对话框中有Build和Deployment模板.我使用Azure网站模板的原因是因为我永远不会记住要传入的msbuild参数.如果要使用RM,只需删除Azure Web App部署任务即可.

我总是对msbuild参数做出的一个改变是PackageLocation.我总是将我改为$(BuildConfiguration).这样我可以根据需要同时构建Debug和Release.

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(BuildConfiguration)"
Run Code Online (Sandbox Code Playgroud)

最后,我更改了Copy and Publish Build Artifacts任务,只搜索"**\*.zip".将Copy Root保留为空并运行构建.当您的构建完成时,在浏览工件时,[ProjectName]/[Configuration] /projectName.zip下的每个项目都会有一个zip.

在此输入图像描述

如果您还有其他问题,可以在Twitter @DonovanBrown上ping我