Можно ли изменить web.config существующего сайта с помощью MSDeploy? - PullRequest
5 голосов
/ 10 января 2012

Можно ли изменить (или просто заменить) web.config существующего сайта с помощью MSDeploy?

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Возможно заменить определенные разделы (указанные с помощью запроса xPath или регулярного выражения) файла веб-конфигурации. Для этого используйте параметры командной строки -declareParam en -setParam.

Вот так

msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:package=ParameterPackage.zip -declareParam:name=param,kind=XmlFile,scope=web.config,match=//add/@value 

или около того:

msdeploy -verb:sync -source:package=ParameterPackage.zip -dest:auto -setParam:name=param,value=MyDefaultWebPage.htm

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

Если вы работаете с импортом и экспортом пакетов в и из IIS, вы можете создать файл parameters.xml. Вишал Джоши написал много хороших сообщений о том, как использовать msdeploy (например, this )

3 голосов
/ 14 февраля 2012

Да, вы можете сделать это.Я только что опубликовал блог по этому вопросу на http://sedodream.com/2012/02/14/HowToUpdateASingleFileUsingWebDeployMSDeploy.aspx, но я также копирую содержание ниже для вас.

На днях я увидел вопрос, опубликованный в StackOverflow, спрашивающий, можно ли обновить веб.config с использованием MSDeploy.Я фактически использовал технику, в которой я обновил один файл в одной из моих предыдущих публикаций на Как перевести ваше веб-приложение в автономный режим во время публикации , но оно не было вызвано слишком много.В любом случае я покажу вам, как вы можете обновить один файл (в данном случае web.config) с помощью MSDeploy.

Вы можете использовать провайдер contentPath для облегчения обновления одного файла.Используя contentPath, вы можете синхронизировать один файл или всю папку.Вы также можете использовать пути приложений IIS, чтобы определить, где находится файл / папка.Например, если у меня есть файл web.config в локальной папке с именем «C: \ Data \ Personal \ My Repo \ sayed-samples \ UpdateWebConfig», и я хочу обновить свой сайт IIS UpdateWebCfg, работающий на веб-сайте по умолчанию в моей папкеЯ бы использовал команду, показанную ниже.

%msdeploy% -verb:sync -source:contentPath="C:\Data\Personal\My Repo\sayed-samples\UpdateWebConfig\web.config" -dest:contentPath="Default Web Site/UpdateWebCfg/web.config"

Из приведенной выше команды вы можете видеть, что я устанавливаю исходный путь содержимого для локального файла и путь содержимого dest с использованием пути IIS {SiteName} / {AppName}/{Путь файла}.В этом случае я обновляю сайт, работающий в IIS, на моей локальной машине.Чтобы обновить тот, который работает на удаленной машине, вам нужно добавить имя_компьютера и, возможно, некоторые другие значения в аргумент –dest.

Последние источники для этого примера можно посмотреть на моем github.Сделки рЕПО .

...