【问题标题】:How to change Appsettings and Config info in Release Pipeline如何在发布管道中更改 Appsettings 和 Config 信息
【发布时间】:2021-02-22 20:22:08
【问题描述】:

我对通过 Azure DevOps 实施 CI/CD 还很陌生,我遇到的可能是我不知道如何解决的典型场景。我发现处理文件转换的大多数文章都与 IIS Deploy 相关,但我目前正在使用 .Net Framework 控制台应用程序。

在我的控制台应用程序中,我们有某些设置,通常是文件路径,根据我们所处的环境(Dev、Stage、Prod)以及每个环境中不同的数据库连接字符串而有所不同。

向我展示了如何使用变量 ex: __connectionstring__,可以使用 Tokenizer 应用在​​ Azure DevOps 发布管道中设置和替换这些变量。但是,在我的开发环境中使用该变量是行不通的。当我在 Visual Studio 中调试时,它仍然可以看到上面的变量名称,并且没有类似标记器的东西来在我的开发机器上本地填充该变量。

有人可以向我指出一篇文章或示例,介绍一种针对我所处的每个环境进行特定应用设置的好方法,这样我仍然可以在本地进行调试,而且还可以更改 ADO 发布管道中的设置?

【问题讨论】:

    标签: c# visual-studio azure-devops devops


    【解决方案1】:

    您可以使用任务File transform 替换 Azure DevOps 发布管道中的某些设置。

    在构建或发布管道中定义的变量将与任何配置文件和 parameters.xml 的 appSettings、applicationSettings 和 connectionStrings 部分中的“key”或“name”条目相匹配。变量替换在配置转换后运行。

    例如,您有以下 appsetting.json 文件。并且您想将默认日志级别更改为错误。

    {
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Warning"
        }
      }
    }
    

    1、首先您需要在发布管道编辑页面的Variables部分定义一个发布变量Logging.LogLevel.Default,并为其分配值Error。见下文

    2,在您的发布管道中添加文件转换任务。

    有关 XML 变量替换的更多信息,请查看here

    还有第三方替换工具(即Magic Chunks/RegEx Find & Replace)可以非常方便地用于替换天蓝色管道中设置文件中的值。请查看this thread 中的示例。

    【讨论】:

    • 谢谢。这看起来也很有希望。我会在接下来的几天里尝试这个,让你知道它是如何工作的。当然,我目前正在使用 .Net Framework,但试图让我们的团队也使用 .Net Core。
    • @Caverman 你有没有机会尝试一下。进展如何?
    • 不,我还没有机会研究那个。工作中的其他承诺始终处于优先地位。我刚刚完成了我的第一个用于生产的 .Net Core 应用程序,并且昨天能够为它完成构建。希望这周或下周能够在发布管道上工作。
    • 想回来说我终于可以尝试了,“文件转换”似乎如图所示工作。我在 .Net Core 应用程序上使用它,我可以将本地数据库设置保留在我的 appsettings 中,然后使用它通过发布管道转换我的 STAGE 和 PROD 值。这也将我的 PROD 连接字符串值保留在我的存储库之外。易于设置,并且适用于 appsettings.json 文件。谢谢!
    【解决方案2】:

    为了转换非网络应用程序的 .config 文件,我总是使用 SlowCheetah

    它的工作原理与web.config 转换类似,但适用于app.config

    【讨论】:

    • 谢谢。我去看看那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多