2017-01-17 33 views
1

Я использую msdeploy в командной строке для развертывания службы Windows с использованием глагола sync против dirPath поставщиков источников и получателей. Все идет нормально.Web Deploy (MSDeploy) 3.6 заменить правило для переименования файла

Активы для создания проекта имеют конфигурационные файлы для каждой среды, а во время развертывания в конкретную среду я хочу переименовать конфигурационный файл целевой среды в имя файла конфигурации по умолчанию, используя правило замены, но как бы я ни занимался заменой Правило ничего, кажется, не дает мне результатов, которые я хочу. Я пытался с рядом различных конфигураций правило, не повезло, но тот, который кажется наиболее логичным это один:

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.Dev\.exe\.config,replace=Service.exe.config 

Если я раскрываю без правила замены и Service.Dev.exe.configService.exe.config и развертываются с ожидаемый соответствующий контент. Как только я добавлю правило замены выше, я получаю только Service.exe.config, и у него есть содержимое этого файла из источника, а не содержимое Service.Dev.exe.config, как я надеюсь. Если я поменять характеристики в match и replace компонентов (и изменить регулярное выражение < -> простого текста соответственно), чтобы прибыть по адресу:

-replace:objectName=filePath,scopeAttributeName=path,scopeAttributeValue=Service\.Dev\.exe\.config,match=Service\.exe\.config,replace=Service.Dev.exe.config 

Я просто Service.Dev.exe.config с содержанием Service.exe.config и в пункте назначения не Service.exe.config.

Уверен, что мне не хватает чего-то очевидного, но что это?

ответ

2

Это не отвечает на ваш вопрос напрямую, но я думаю, что это лучшее решение вашей корневой проблемы.

Настоящая проблема заключается в управлении конфигурацией для разных сред. Многие разработчики создают разные конфигурации для каждой среды, как вы. Этот подход требует много дублирования в разных конфигурационных файлах, которые могут легко выйти из синхронизации.

Лучший подход, который я нашел для управления конфигурацией в разных средах, - это WebDeploy Parameterization. Он похож на конфигурационные преобразования, поскольку у вас есть один базовый конфигурационный файл, который изменен, поэтому есть гораздо меньше дублирования. Однако параметризация предпочтительнее, поскольку она применяет изменения во время развертывания вместо времени сборки. Мы используем это для более 50 приложений с большим успехом.

Это сообщение в блоге с более подробной информацией - http://www.dotnetcatch.com/2014/09/08/parameterizationpreview-visual-studio-extension/