Хотя метод замены токенов очень удобен и прост в использовании в Azure devops конвейере, как вы упомянули, он доставляет много хлопот другим разработчикам (особенно для локальной разработки).
Почему бы не рассмотреть возможность использования Преобразование файла для выполнения этой работы по преобразованию? Эта задача имеет одну функцию подстановка переменных , которая позволяет избежать любых изменений формата в файле конфигурации. Просто нужно определить соответствующие переменные, которые будут заменены в файле конфигурации.
Позвольте мне взять один пример , чтобы объяснить это, ниже приведен простой web.config
пример файла:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="apiConfig" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<apiConfig>
<add key="ClientBasetUrl" value="http://localhost:4200" />
</apiConfig>
<system.web>
<compilation debug="true" targetFramework="4.6.2">
<assemblies>
<add assembly="System.Net.Http.WebRequest, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.6.1" maxRequestLength="20480" />
</system.web>
</configuration>
Теперь мне нужно заменить значение ClientBasetUrl
: http://localhost:4200
на http://localhost:8080
.
1) Так как вас интересует, объедините Azure Key Vault с Asp. net веб-приложением, просто go и создайте один секрет ClientBasetUrl
в Azure ключ Vault, и его значение составляет http://localhost:8080
.
![enter image description here](https://i.stack.imgur.com/nCQ5g.png)
2) Подключение Azure хранилище ключей в azure Devops трубопровод.
3) Вот ключевой шаг: выполните настройку File Transform task
.
steps:
- task: FileTransform@2
displayName: 'File Transform with Variable: '
inputs:
folderPath: '$(System.DefaultWorkingDirectory)'
xmlTargetFiles: MonoApp.config //Here put your config file name that relative to the root folder
Затем вы увидите, что замена успешно завершена после завершения этой задачи.
Вы видите, что мне не нужно вносить какие-либо изменения в синтаксис моего конфигурационного файла, просто нужно сохранить соответствующие переменные в хранилище ключей Azure и убедиться, что они могут быть загружены во время работы конвейера.
Кроме того, это может сделать меня go очень гладко на моей местной работе по разработке.