Менеджер релизов для приложения TFS 2013.обработка конфигураций с помощью файлов маркеров


Я, кажется, получаю много боли с обработкой приложения.конфигурационные и маркерные файлы (у нас это работает со старыми".11 " шаблоны).

Это выглядит как в настоящее время (с помощью ReleaseTfvcTemplate.12.xaml)это запуск токенизации после сборки.

Пока я могу сделать приложение.config / myapp.exe.config вещи работают, намеренно копируя .файл токена в мою выходную папку (поэтому рекурсивный поиск находит его) это выглядит довольно ужасно.

В качестве исправления я искушение переместить строки 182-230 непосредственно перед задачей RunMSBuild в строке 175 (создание новой последовательности в этой точке)

Это правильный подход или я пропустил какую-то документацию (или более позднюю версию шаблона?)

3 2

3 ответа:

Замена переменных в конфигурационных файлах с помощью управления релизами происходит во время развертывания, а не во время компиляции.

Когда RM развертывает ваше приложение, оно вставляет правильные переменные.

Спасибо, ребята... Во всяком случае, на будущее я действительно внес изменения.

Однако я неправильно понял точную природу порядка вещей, происходящих из коробки, который выглядит следующим образом:
  • вывести проект из системы управления версиями
  • Сборка с msbuild
  • копировать .конфиг.маркер файла поверх .конфигурационный файл. это в шаблоне TFS
  • как часть развертывания на сервере, то маркерные записи в .конфигурационные файлы заменяются. это в шаблон менеджера релизов.
  • тесты выполняются в двоичных выходных папках msbuild.

Проблема в том, что это действительно не работает, если вы используете тип проекта, который использует приложение.конфигурационный файл, как процесс msbuild переименовывает эти выходные данные.exe.config во время этапа msbuild, так что вам нужно создать оба вывода.exe.config (помечено как copy to output)и вывод.exe.конфиг.маркер, так как после развертывания является итоговым результатом, получает правильно настроен. Это тоже проблема, если вы хотите маркировать некоторые библиотеки DLL mstest, поскольку они обычно используют приложение.и конфиг тоже. В принципе, это немного беспорядок, если вы не используете веб.конфиг.

Мы обошли это с помощью модификации, которую я предложил выше (вам нужно создать последовательность в строке 175 и переместить строки 178-230 вверх в последовательность, это биты переменной GetBuildDirectory и оператор if), а затем добавить дополнительный этап развертывания, который копирует обратно на сервер сборки с новым маркированным именем. файлы, чтобы mstest мог работать против них.

Итак, наш новый процесс выглядит следующим образом:

  • вывести проект из системы управления версиями
  • копировать .конфиг.маркер файла поверх .конфигурационный файл, то есть приложение.конфиг.маркер копируется приложение.config
  • build with msbuild (это означает, что мы в конечном итоге получаем маркированный myapp.exe.config и mytests.файл DLL.config)
  • как часть развертывания на сервере, то маркерные записи в .конфигурационные файлы заменяются. это шаг управления релизом в шаблоне выпуска.
  • разверните тесты обратно в папку на сервере сборки (думаю, что это должна быть фиксированная папка, пока не будет развернуто обновление 4 release manager).конфигурационные файлы заменяются (так что наши интеграционные тесты могут использовать только что развернутые серверы). это шаг управления релизом в шаблоне релиза.
  • тесты выполняются в фиксированной папке на сервере сборки (а не в выходном каталоге msbuild), поэтому требуется подстановочный знак теста. для изменения в шаблоне сборки tfs.

быстрое заключительное замечание мы не используем эту переменную каталога сборки, и она остается пустой, я не уверен, что это сработало бы, если бы она была установлена в значение...

Похоже, вы попали в одну из двух проблем:

  1. Вы должны включить его .файл токена в вашем проекте и убедитесь, что он имеет значение копировать всегда , чтобы он был скопирован в выходную папку сборки.

  2. Если вы создаете веб-приложение, я видел ошибку в шаблоне процесса сборки выпуска, которая не касается содержимого папки _PublishedWebsites. Я не знаю, было ли это исправлено в обновлении 4 или нет, но это определенно было проблемой раньше версии.