Если File transformation
не подходит для вашего проекта, как насчет использования сценария powershell для изменения элемента?
Пример:
Вот мой пример web.product.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="service.tasks" type="HRNetTaskService.TaskConfigurationSection, TaskService" />
</configSections>
<connectionStrings>
<add name="Production" connectionString="xxxx" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="RestServiceUrl" value="https://sample.net" />
</appSettings>
</configuration>
Теперь я хочу обновить connectionString
из .config
файл. Добавьте replace.ps1
в репозитории с помощью приведенных ниже сценариев, а затем вызовите этот файл replace.ps1
в задаче Powershell, передав соответствующее значение динамического c:
Param(
[string]$source,
[string]$connectionstring
)
$webConfig = $source
$doc = (Get-Content $webConfig) -as [Xml]
$root = $doc.get_DocumentElement();
$activeConnection = $root.connectionStrings.SelectNodes("add");
$activeConnection.SetAttribute("connectionString", $connectionstring);
$doc.Save($webConfig)
![enter image description here](https://i.stack.imgur.com/pXq2g.png)
Здесь $(ProductValue)
- это переменная, настроенная вами в Azure хранилище ключей. Его путь вызова такой же, как и для переменной конвейера. Просто вам нужно ссылка хранилище ключей Azure в azure devops, а затем объединить его с Variable group
.