Обновление переменных в web.config вне appSettings - PullRequest
1 голос
/ 07 ноября 2019

Мне нужно обновить значения в web.config в Azure TFS. Я могу получить замененное значение для connectionString, которое является частью appSettings (чтобы это работало, мне нужно было включить параметр с именем подстановки переменных XML (в IIS Web Deploy).

Однако есть и другиеобласти внутри web.config, которые не заменяются.

Я пробовал несколько разных подходов, используя разные задачи для замены токена, используя параметр «Release» или «Environment» для переменных, используя группы переменных. ничего из этого не сработало.

В настоящее время я использую задачу «Замена токенов» (доступно по адресу https://github.com/qetza/vsts-replacetokens-task#readme)

Я установил префикс и суффикс токена в __ (чтобы соответствовать тому, чтоis web.config)

Вот выдержка из файла web.config

<?xml version="1.0"?>
<configuration>
    <appSettings>
        <add key="ConnectionString" value="__ConnectionString__"/>
    </appSettings>
    <system.web>
        <pages theme="__Theme__" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            </controls>
        </pages>
    </system.web>
    <system.serviceModel>       
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
        <bindings>
            <customBinding>
                <binding name="TestBinding1">
                    <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Soap12" writeEncoding="utf-8">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    </textMessageEncoding>
                    <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" requireClientCertificate="false" />
                </binding>
            </customBinding>
            __basicHttpBindingOptionalBinding__
        </bindings>
        <client>
            <endpoint address="__TestEndPoint__" binding="customBinding" bindingConfiguration="TestBinding1" contract="BSEInspectionsWebServiceForFDA.StateDataTransfer" name="StateDataTransferPort" />
            __endpointOptionalEndpoint__
        </client>
    </system.serviceModel>
</configuration>

Я ожидаю только пустые строки для basicHttpBindingOptionalBinding и endpointOptionalEndpoint. Тема должнадолжен быть заменен на TestTheme, а для TestEndPoint должно быть установлено значение, определенное в переменных.

1 Ответ

0 голосов
/ 09 ноября 2019

Для замены __Theme__, __TestEndPoint__ я рекомендую расширение задачи Магические чанки .

Вы можете установить задачу Магические чанки в своей организации и добавить ее в свой конвейер. Он протестировал ваш web.config с приведенными ниже примерами настроек для задачи «Волшебный кусок»: enter image description here

Для замены basicHttpBindingOptionalBinding , я рекомендую другую задачу расширения RegEx Find& Заменить

enter image description here

Вы можете ссылаться на переменные конвейера в обеих задачах. Я добавил выше две задачи к моему тестовому конвейеру. Значения в web.config были успешно заменены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...