从 AzureDevOps 替换令牌在应用程序设置中设置 JSON 密钥

J.G*_*ble 1 azure azure-devops azure-pipelines

我正在努力使用 Azure Devops 中的替换令牌任务将变量发送到 Blazor 服务器应用程序中的 appsettings.json 文件。

在 中appsettings,我有这个:

{
  "version": "#{versionNumber}#"
}
Run Code Online (Sandbox Code Playgroud)

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

versionNumber: '$(version.Major).$(version.Minor).$(version.Revision)'
Run Code Online (Sandbox Code Playgroud)

我的 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
Run Code Online (Sandbox Code Playgroud)

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

replaced 0 tokens out of 0 in 0 file(s) in 1.17 seconds
Run Code Online (Sandbox Code Playgroud)

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

Leo*_*SFT 5

从 AzureDevOps 替换令牌在应用程序设置中设置 JSON 密钥

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

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

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

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

在此输入图像描述

然后我们可以通过查看 YAML 选项来获取 YAML。

并用示例进行测试,它在我这边工作得很好:

在此输入图像描述