之前写了一个替换配置是用powershell去替换,powershell命令替换可以避免cmd替换时的某些特殊字符出问题的大坑。

第二种替换方式是直接使用deploy task自带的功能。

 

比如使用Deploy Azure App Service 任务,它提供了一个叫File Transforms & Variable Substitution Options 的配置,

其功能为对指定的文件(xml或json)进行字符串替换。

如下,我配置了对网站下的appsettings.json文件进行参数替换操作。

然后,在variables中,设置需要替换的键值,我这边是json格式的,设置键时应该从根节点到目标节点,以“.”点去分割。

 

 这是我json文件中实际内容:

 

 

{
  "ConnectionStrings": {
  },
  "App": {
    "AppKeyVault": "AppCorsConfig"
  },
  "Authentication": {
    "KeyVaultApp": {
      "TenantId": "{TenantId}",
      "ClientId": "{ClientId}",
      "ClientSecret": "{ClientSecret}",
      "KeyVaultEndPoint": "{KeyVaultEndPoint}",
      "DBConnectionString": "DBConnectionString"
    },
    "Storage": {
      "StorageKeyVault": "StorageConfig"
    },
    "WeChatAPI": {
      "WeChatAPIKeyVault": "WeChatAPIConfig"

    }


  }
}

  

最后执行效果,就是json文件中的 {TenantId},{ClientId},{ClientSecret},{KeyVaultEndPoint} 被替换为了variables中设置的值

 

另一种替换方法:

选择DeployAzureAppService中的【PostDeploymentAction】,选择InlineScript,执行脚本:powershell -Command "(gc  ApplicationInsightsDeploy.config) -replace '{ApplicationInsightsKey}', '$(ApplicationInsights.InstrumentationKey)' | Out-File ApplicationInsights.config"

其中:$(ApplicationInsights.InstrumentationKey)是定义在Variable中的变量

 

PS:一个额外小命令记录一下

查询所有环境变量:

Get-ChildItem Env:

 

posted on 2021-01-13 11:54  慕凡尘  阅读(160)  评论(0编辑  收藏  举报