微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在部署时使用变量而不是 XML 转换来转换 Web.Config?

如何解决如何在部署时使用变量而不是 XML 转换来转换 Web.Config?

我们目前有以下 Web.Release.config 文件,可在部署时转换 Web.config

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
  <elmah>
    <errorLog xdt:Transform="Remove" />
    <errorMail xdt:Transform="Remove" />
    <errorMail xdt:Transform="Insert" from="reports@companyxyz.com" to="a23cv@companyxyzteam.slack.com" subject="Dashboard Error" async="true" smtpPort="587" smtpServer="smtp.sendgrid.net" userName="apikey" password="password123" />
  </elmah>
</configuration>

如您所见,配置文件包含敏感信息,例如 password

管道工件包含脚本、内容、捆绑包,以及与此问题最相关的 Web.Debug.configWeb.Release.configWeb.config

web configs

发布工件时,发布管道会触发 Azure 应用服务任务部署:

steps:
- task: AzureRmWebAppDeployment@4
  displayName: 'Deploy Azure App Service'
  inputs:
    azureSubscription: '$(Parameters.ConnectedServiceName)'
    appType: '$(Parameters.WebAppKind)'
    WebAppName: '$(Parameters.WebAppName)'
    enableCustomDeployment: true
    TakeAppOfflineFlag: false
    RenameFilesFlag: false
    enableXmlTransform: true

XML 转换不是更改 password 之类的属性,甚至是 to 电子邮件属性,而是我们希望将它们存储为变量,可能在发布管道中(可能创建一个elmah 组包含这些属性/值)并使用这些变量来转换 Web.config 文件。 当然,我们仍然希望发生其他 XML 转换设置,例如 <system.web>,但我们希望使用变量而不是 XML 文件来转换 <elmah> 中的属性

我们怎样才能做到这一点? 我知道如何创建变量,但我不确定如何或是否可以使用变量而不是 Web.configWeb.Debug.config

来转换 Web.Release.config 文件

是否有设置/任务可以做到这一点?

解决方法

我不确定如何或是否可以使用变量而不是 Web.Debug.config 或 Web.Release.config 来转换 Web.config 文件

我们可以安装扩展 Replace Tokens,添加变量并将变量设置为 secret,然后添加任务替换令牌以替换 web.configure 变量并在 Azure DevOps 管道中使用它。

更新 1

打开.csproj文件并添加字段<CopyToOutputDirectory>Never</CopyToOutputDirectory>,它不会复制Web.Release.config文件。

<None Include="Web.Release.config">
      <DependentUpon>Web.Release.config</DependentUpon>
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </None>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。