【发布时间】:2021-03-12 02:16:57
【问题描述】:
我被 Angular 项目的发布变量替换卡住了。我有一个settings.json 文件,我想替换一些变量:
{
test : "variable to replace"
}
我试图在市场上找到一些自定义任务,但所有任务似乎只适用于 web.config 的 xml 文件。
【问题讨论】:
标签: azure-devops
我被 Angular 项目的发布变量替换卡住了。我有一个settings.json 文件,我想替换一些变量:
{
test : "variable to replace"
}
我试图在市场上找到一些自定义任务,但所有任务似乎只适用于 web.config 的 xml 文件。
【问题讨论】:
标签: azure-devops
我使用来自市场的“替换令牌”https://marketplace.visualstudio.com/items?itemName=qetza.replacetokens
您将所需的值定义为发布定义中的变量,然后添加替换标记任务并为存储库中要替换值的所有目标文本文件配置通配符路径(例如:**/*. json)。被替换的令牌具有可配置的前缀和后缀(默认为 '#{' 和 '}#')。因此,如果您有一个名为 constr 的变量,则可以将其放入 config.json
{
"connectionstring": "#{constr}#"
}
它会像这样部署文件
{
"connectionstring": "server=localhost,user id=admin,password=secret"
}
【讨论】:
VSTS 版本中的 IIS Web 应用部署任务在 *File Transforms & Variable Substitution Options 下具有 JSON 变量替换。 提供需要替换的变量的 json 文件列表和 JSONPath 表达式
例如,要替换下面示例中的“ConnectionString”的值,您需要在构建/发布定义(或发布定义的环境)中定义一个变量为“Data.DefaultConnection.ConnectionString”。
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
}
}
}
【讨论】:
您可以在发布变量选项卡中添加一个变量,然后使用 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
【讨论】: