我坚持使用角项目的发布变量替换。我有一个settings.json
文件,我想替换一些变量:
{
test : "variable to replace"
}
我试图在市场上找到一些自定义任务,但所有任务似乎只适用于web.config的xml文件。
答案 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文件中的变量:
在发布变量标签中定义一个变量,其中包含您要替换的值(变量 test ,其值为new
):
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"
}
}
}