asp.net - 使用 Visual Studio 团队服务构建包含多个 Web 应用程序的解决方案并将这些 Web 应用程序部署到 azure

标签 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)" 

构建步骤包括 Visual Studio 构建步骤、Visual Studio 测试步骤(当前已禁用以尽量减少复杂性)、索引源和发布符号步骤(我认为我并不真正需要),最后是复制和发布构建工件步骤。

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

我没有看到每个 Web 应用程序都有一个 zip 文件,而这正是 Visual Studio Team Services 的发布功能所期望的。

我想知道如何修改我当前的配置,以便我可以从构建步骤生成正确的工件,以便我可以创建正确的发布 Wep 应用程序部署任务,以将每个 Web 应用程序部署到我的应用程序中的正确 Web 应用程序环境。

这一切都是通过 Visual Studio 2015 和 Visual Studio Online(团队服务)完成的。

最佳答案

为了测试您的情况,我使用了 Visual Studio 2015,并在同一解决方案中创建了 3 个新的 Web 项目,并 checkin 了 VSTS。然后,我使用 Azure 网站部署模板创建了一个新版本。许多人错过了我们在“创建新构建定义”对话框中提供的“构建”和“部署”模板。我使用 Azure 网站模板的原因是因为我永远记不起要传入的 msbuild 参数。如果您要使用 RM,只需删除 Azure Web App 部署任务即可。

我总是对 msbuild 参数进行的一项更改是 PackageLocation。我总是将我的更改为 $(BuildConfiguration)。这样我就可以根据需要同时构建调试和发布。

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(BuildConfiguration)"

最后,我将复制和发布构建工件任务更改为仅搜索“**\*.zip”。将复制根保留为空并运行您的构建。 构建完成后,当您探索工件时,[ProjectName]/[Configuration]/projectName.zip 下的每个项目都会有一个 zip。

enter image description here

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

关于asp.net - 使用 Visual Studio 团队服务构建包含多个 Web 应用程序的解决方案并将这些 Web 应用程序部署到 azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33904574/

相关文章:

asp.net - 如何在 ASP.NET 中加载图像服务器端?

azure-devops - 在步骤条件中使用矩阵环境变量的 Azure 管道

azure - 我的发布管道上出现范围错误意味着什么?

c# - 如何在 asp.net 中删除或更新部分查询字符串

c# - asp :panel in asp.net mvc 的替代方案

c# - 给定一个人的年龄,如何从 SQL 语句返回生日

node.js - 无法使用 Sequelize 从 PG DB(在 Azure 中)检索数据

Azure 移动应用服务

asp.net - 我们可以使用 imageresizer 加速或避免对图像请求使用 AuthorizeRequest 吗?

azure - Jamal Hartnett 推送了 Fabrikam-Fiber-Git 的更新 :master