如何在Team Services中替换json文件的变量?

时间:2017-06-27 22:35:54

标签: azure-devops

我坚持使用角项目的发布变量替换。我有一个settings.json文件,我想替换一些变量:

{ 
    test : "variable to replace"
}

我试图在市场上找到一些自定义任务,但所有任务似乎只适用于web.config的xml文件。

3 个答案:

答案 0 :(得分:4)

我使用市场https://marketplace.visualstudio.com/items?itemName=qetza.replacetokens

中的“替换令牌”

在Release Release中将所需值定义为变量,然后添加Replace Tokens任务并为存储库中要替换值的所有目标文本文件配置通配符路径(例如:** / *。 JSON)。被替换的令牌具有可配置的前缀和后缀(默认为'#{'和'}#')。因此,如果你有一个名为 constr 的变量,你可以输入你的config.json

{
   "connectionstring": "#{constr}#"
}

它将部署文件,如

{
   "connectionstring": "server=localhost,user id=admin,password=secret"
}

答案 1 :(得分:1)

您可以在发布变量选项卡中添加变量,然后使用PowerShell任务更新settings.json的内容。

假设原始内容为

{ 
    test : "old
}

您想将其更改为

{ 
    test : "new"
}

所以你可以用以下步骤替换json文件中的变量:

1。添加变量

在发布变量标签中定义一个变量,其中包含您要替换的值(变量 test ,其值为new):

enter image description here

2。添加PowerShell任务

powershell任务的设置:

输入:内联脚本。

内联脚本:

# System.DefaultWorkingDirectory is the path like C:\_work\r1\a, so you need specify where your appsettings.json is.
$path="$(System.DefaultWorkingDirectory)\buildName\drop\WebApplication1\src\WebApplication1\appsettings.json"
(Get-Content $path) -replace "old",$(test) | out-file $path

答案 2 :(得分:1)

VSTS版本中的IIS Web App部署任务在* File Transforms&可变替代选项。 为需要替换的变量提供json文件和JSONPath表达式列表

例如,要替换下面示例中的“ConnectionString”的值,您需要在构建/发布定义(或发行版定义的环境)中将变量定义为“Data.DefaultConnection.ConnectionString”。

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}