使用发布管道变量更新 web.config 值的推荐方法是什么?

var*_*ble 4 azure-devops azure-pipelines azure-pipelines-release-pipeline

我计划使用 azure devops 发布管道将.NET Web 应用程序部署到测试、uat 和 prod 环境中。

我之前曾参与过具有 appsettings.json 文件并使用变量替换方法的项目,如下面的屏幕截图所示:

在此输入图像描述

在对包含.NET Web 应用程序进行变量替换时web.config,我正在探索以下选项:

  1. 生成 web.config 参数部分,该部分显示在上面标记的 JSON 部分上方。但描述称它适用于 Python、Node.js、Go 和 Java 应用程序。它没有提到.NET。
  2. 在 web.config 文件中,在值中我可以添加类似XXMARKERXX 的内容,然后通过 Powershell 脚本可以将上面的内容替换为管道变量中的内容?

Kev*_*SFT 5

web.config文件是XML格式类型的文件。因此,您无法在任务中使用 JSON 变量替换选项来更新值。

以下是更新 Web.config 文件中的值的方法:

1.您可以在 Azure 应用服务部署任务或 IIS 部署任务中使用XML 变量替换选项。

在此输入图像描述

有关更详细的步骤,请参阅此文档:XML 变量替换

2.您可以使用PowerShell脚本修改该值。但您不需要在 web.config 文件中添加任何其他字符。

以下是 PowerShell 脚本示例:

$myConnectionString = "test";

$webConfig = '$(build.sourcesdirectory)\Web.config'

Function updateConfig($config) 
{ 
$doc = (Get-Content $config) -as [Xml]
$root = $doc.get_DocumentElement();
$activeConnection = $root.connectionStrings.SelectNodes("add");
$activeConnection.SetAttribute("connectionString", $myConnectionString);
$doc.Save($config)
} 

updateConfig($webConfig)
Run Code Online (Sandbox Code Playgroud)

3.当您在 web.config 文件中添加标记:时#{..}#,您可以尝试使用Replace Tokens Extension中的 Replace Token 任务。

请参阅此票证中的示例:如何使用替换令牌在 web.config 中执行 XML 元素替换?