首页 > 解决方案 > 从 AzureDevOps Replace Tokens 在 appsettings 中设置 JSON 键

问题描述

我正在努力使用 Azure Devops 中的 Replace Tokens Task 将变量发送到 Blazor 服务器应用程序中的 appsettings.json 文件。

appsettings,我有这个:

{
  "version": "#{versionNumber}#"
}

在 Azure DevOps 中,我设置了以下变量:

versionNumber: '$(version.Major).$(version.Minor).$(version.Revision)'

我的 ReplaceToken 任务是:

- task: replaceToken@3
  displayName: "Replacing version in appsettings"
  inputs:
    targetFiles: '**/*.appsettings.json'
    encoding: 'auto'
    writeBOM: true
    actionOnMissing: 'warn'
    keepToken: false
    tokenPrefix: '#{'
    tokenSuffix: '}#'
    useLegacyPattern: false
    enableTelemetry: true,
    verbosity: detailed

但是,在构建管道中,我看到:

replaced 0 tokens out of 0 in 0 file(s) in 1.17 seconds

对我在这里做错了什么有任何帮助吗?

标签: azureazure-devopsazure-pipelines

解决方案


从 AzureDevOps Replace Tokens 在 appsettings 中设置 JSON 键

那是因为您在该任务中缺少参数根目录,即搜索文件的基本目录。如果未指定,将使用默认工作目录。

由于您没有在任务中指定 Root 目录,因此它将使用默认工作目录,例如System.DefaultWorkingDirectory.

但是,您指定targetFileswith **/*.appsettings.json,如果该appsettings.json文件碰巧不在默认文件夹的子文件夹中,那么您将遇到与您相同的问题。

所以,要解决这个问题,我们需要指定根目录。您可以使用经典模式通过浏览根目录选择文件:

在此处输入图像描述

然后我们可以通过 View YAML 选项获取 YAML。

并用样品测试,它在我这边工作正常:

在此处输入图像描述


推荐阅读