Управление выпусками VS 2017 Помечает XPath / регулярные выражения не работают

#tfs #azure-pipelines #azure-pipelines-release-pipeline

#tfs #azure-конвейеры #azure-pipelines-release-pipeline

Вопрос:

Я пытаюсь использовать маркировку управления выпусками XPath / Regular, и я продолжаю получать разные ошибки при попытке ответить на три записи

  1. Исходное имя файла: $(System.DefaultWorkingDirectory) / XXXXX / Drop — Я знаю, что это находится на моем сервере сборки, этот файл должен быть xxxxxx.exe.config и находится в zip-файле

  2. Имя файла назначения: я не знаю, должно ли это быть на сервере сборки или на сервере выпуска?

  3. Имя файла конфигурации в формате Json: я действительно не знаю, куда это поместить, приведенный ниже код является файлом Json.

    { «РАЗРАБОТЧИК»: {

         "ConfigChanges": [{
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "emailListId",
            "value": 0
        },
        {
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "subjectLineStarter",
            "value": "[DEV]: Program Name"
        },
        {
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "smtpServer",
            "value": "testsmtp.dns.com"
        },
        {
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "toAddress",
            "value": "application.support.test@Yahoo.com"
        }]
    }
      

    }

Моя ошибка

 2019-04-01T16:40:08.4509133Z ##[section]Starting: Tokenizer: Transform Source filename
2019-04-01T16:40:08.4663688Z ==============================================================================
2019-04-01T16:40:08.4663688Z Task         : Tokenize with XPath/Regular expressions
2019-04-01T16:40:08.4663688Z Description  : Replaces __<variable>__ and/or XPath for XML documents with User Defined variables or configuration json document
2019-04-01T16:40:08.4663688Z Version      : 2.1.0
2019-04-01T16:40:08.4663688Z Author       : ms-devlabs
2019-04-01T16:40:08.4663688Z Help         : [More Information](https://github.com/openalm/Extension-UtilitiesPack)
2019-04-01T16:40:08.4663688Z ==============================================================================
2019-04-01T16:40:10.6850718Z Environment: DEV
2019-04-01T16:40:10.8413250Z Updating emailListId of /configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']: 0
2019-04-01T16:40:10.9350669Z ##[error]Failure while updating emailListId of /configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']: 0
2019-04-01T16:40:10.9663179Z ##[section]Finishing: Tokenizer: Transform Source filename
  

в моем файле .proj я поместил это, чтобы я мог получить App.Config.Файл токена при выпуске вместо App.Config.

 <ItemGroup>
    <None Include="App.config" />
    <None Include="App.Debug.config">
      <DependentUpon>App.config</DependentUpon>
    </None>
    <None Include="App.config.Token">
      <DependentUpon>App.config</DependentUpon>
    </None>
  </ItemGroup>
  

App.config и App.Debug.config идентичны.
App.Config.Токен

Комментарии:

1. Задача, для которой вы показываете сообщение об ошибке, не имеет ничего общего с токенизацией.

2. Что ж, ошибка может быть неверной, но это тот процесс, который я пытаюсь создать. У меня есть Auto.config, и я создал Auto. Конфигурация. Токен в том же каталоге. Когда я выполняю задачу сборки, мне нужен автоматический режим. Конфигурация. Необходимо выбрать токен, чтобы в program.exe.config были элементы, подлежащие замене.

3. В вашем вопросе говорится, что вы пытаетесь сделать одну вещь. Сообщение об ошибке, которое вы видите, относится к совершенно другой вещи , которая не связана с вашим вопросом. Никто не может помочь с вопросом без более подробной информации о том, что не работает с предметом вопроса .

Ответ №1:

Вот процесс токенизации, который мы используем в настоящее время (мы не заархивируем результаты сборки, смотрите Предложения по расширениям ниже):

СБОРКА:

Замените App.Config на App.Config.Маркер, например, с помощью команды копирования в командной строке -задача.

ВЫПУСК

Для каждой среды / этапа:

  • Используйте расширение «Заменить токены» для .config. Это считывает переменные, зависящие от среды, из определения выпуска и заменяет токены в файле .config (который был заменен на .config.token в сборке)
  • Выполните развертывание

Для замены токенов внутри архива требуется другое расширение, Токенизация в архиве может быть вариантом. Мы используем инструменты Колина для сборки и выпуска, в которых есть отличный токенизатор для json-файлов. Я предпочитаю токенизатор Колина, поскольку он довольно прост и не нужно возиться с XPATH и преобразованиями. Мы также используем Json для переменных для хранения переменных среды в VC, вместо того, чтобы хранить их в определениях выпуска. Я подозреваю, что последнее не будет работать в TFS 2017, но не пробовал.

Что касается первоначального вопроса, я подозреваю, что используемое вами расширение не может прочитать файл, который вы пытаетесь маркировать, из архива. Сам я не использовал это расширение, но я бы поместил JSON-файл в систему управления версиями, чтобы он попал в артефакт сборки. Имя файла назначения подразумевает, что расширение могло записать окончательный конфигурационный файл, вероятно, заменив исходный app.config.