Azure DevOps-如何发布ASP.NET应用程序

时间:2019-05-21 15:18:44

标签: asp.net azure azure-devops

我有一个成功运行并在我的计算机上启动的ASP.NET(4.7.2)应用程序。此应用程序具有一个web.config文件,其中包含以下内容:

Web.config

<appSettings>
  <add key="username" value="someone@email.com" />
  <add key="port" value="25" />
</appSettings>

这些是我在工作时要使用的配置值。但是,当出于测试目的将应用程序部署到Azure应用程序服务时,我想更改port值。因此,我添加了一个名为“ Web.Test.config”的配置转换,内容如下:

Web.Test.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="port" value="58" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  </appSettings>
</configuration>

不幸的是,似乎转换没有发生。我已经准备好仅在“发布”期间进行转换。目前,我正在通过Azure DevOps管道进行部署,该管道包括以下任务:

NuGet

根据.sln文件恢复软件包

MSBuild

构建定义我的ASP.NET应用程序的.csproj。 “配置”属性设置为“测试”。

Azure App Service部署

尝试将ASP.NET应用程序作为“ Windows上的Web应用程序”部署到我的部署槽中。 “包或文件夹”设置为MyAspNetApp

尽管此构建管道成功运行,但配置转换似乎并未生效。如何通过Azure DevOps生成管道“发布”到Azure应用服务,以便生成我的配置转换。

3 个答案:

答案 0 :(得分:1)

对于App.Config或Web.Config(XML)文件,有两个选项。

  1. @Jabberwocky在评论中建议的文件转换任务。
  2. 根据发布管道中的以下图片替换变量。

Sample XML variable substitution

对于使用json配置的现代.NET应用程序,变量替换是唯一的方法。尽管thread

表示即使File Transform任务承诺对两者都起作用,但仍不清楚

对于JSON变量,您必须输入完整的路径层次结构

Sample JSON variable substitution

答案 1 :(得分:0)

  • 转到Azure Devops
  • 从左侧创建新的构建(管道=>构建)
  • 选择您的存储库

enter image description here -创建构建管道

enter image description here

enter image description here -创建发布管道并添加构建工件 enter image description here

enter image description here

enter image description here

  • 选择部署插槽和其他选项 enter image description here

答案 2 :(得分:0)

  

如何通过Azure DevOps生成管道向Azure应用服务“发布”,以便生成我的配置转换。

首先,我们需要确保web.*.config文件包含在构建输出中,并且文件已正确转换。首先在本地检查。

此外,以下步骤应会有所帮助:

  • 删除web.dev/stest/atest/prod.config文件的嵌套 通过删除嵌套的csproj 中的元素 VS的附加组件或VS 2017中的“文件嵌套”上下文菜单项

    文档XML transformation notes中的注释指出:

      

    默认情况下,MSBuild在生成网站时会应用转换   包,如果元素已经存在   * .csproj文件中的转换文件。在这种情况下,Azure应用程序   服务部署任务将失败,因为没有其他操作了   转换应用于Web.config文件。因此它是   建议从所有   使用XML时转换文件以禁用任何构建时配置   转变。

  • 确保*.config文件具有'Copy to Output Directory' 属性设置为newer还是always

  • 在本地构建解决方案并检查bin \ release的内容 文件夹并确保包含web.*.config文件

  • 在VSTS中运行构建,并确保包含web.*.config文件 在压缩包中

  • 选中Azure App Service部署任务上的复选框 XML转换enter image description here

关于how to Using XML Transformations when deploying to Azure App Service using VSTS,有一个很棒的文档,您可以检查一下更多细节。

顺便说一句,由于您只需要更改port值,因此可以在Azure App Service部署任务上使用选项XML variable substitution

详细信息的门票:How to transform Web.Config file 'Properly' with VSTS!

希望这会有所帮助。