Если есть много сайтов, которые нужно часто перепубликовывать из исходников в IIS, используя сохраненный профиль публикации, делаем вот что.
- Для каждого сайта настраиваем профиль публикации как нужно (способ публикации Web Deploy). При этом профиль публикации нужно называть по имени сайта. Например для “site1.ru” профиль должен называться “site1.ru” 🙂 Пароль можно не сохранять
- Каждый сайт находится в отдельной папке. Надо чтобы эта папка назвалась по имени сайта. Так проще будет
- Внутри каждой папки стандартная сайтовая требуха: картинки, исходники, вебконфиги и главное csproj файл, надо чтобы csproj файл назывался по имени сайта.
- Закидываем в папку cmd файл такого содержания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@echo off set /P pass="Password: " call :compile_and_publish <span style="background-color: #54d524;">site1</span> call :compile_and_publish <span style="background-color: #54d524;">site2</span> call :compile_and_publish <span style="background-color: #54d524;">site3</span> call :compile_and_publish <span style="background-color: #54d524;">site4</span> call :compile_and_publish <span style="background-color: #54d524;">site5</span> call :compile_and_publish <span style="background-color: #54d524;">site6</span> pause goto :eof :compile_and_publish SETLOCAL @echo on msbuild %1.ru/%1.ru.csproj /verbosity:m /t:Build,Clean /p:DeployOnBuild=true /p:AllowUntrustedCertificate=true /p:PublishProfile=%1.ru.pubxml /p:UserName=<span style="background-color: #54d524;">ТУТ_ИМЯ_ПОЛЬЗОВАТЕЛЯ</span> /p:Password=%pass% @echo off ENDLOCAL |
Получается так:
Теперь, когда мы запускаем этот cmd файл, он спрашивает пароль и закидывает его в переменную pass. За это отвечают эти строки:
1 |
set /P pass="Password: " |
Далее для каждого сайта, перечисленного в отмеченных зеленым строках, выполняется команда compile_and_publish. Это наподобие функции, которая содержит один единственный вызов:
1 |
msbuild %1.ru/%1.ru.csproj /verbosity:m /t:Build,Clean /p:DeployOnBuild=true /p:AllowUntrustedCertificate=true /p:PublishProfile=%1.ru.pubxml /p:UserName=<span style="background-color: #54d524;">ТУТ_ИМЯ_ПОЛЬЗОВАТЕЛЯ</span> /p:Password=%pass% |
В переменную %1 подставляется строка имя сайта, в %pass% подставляется пароль, который ты введешь ранее.
Эта команда и компилирует и публикует сайт. разберем параметры msbuild:
- %1.ru/%1.ru.csproj – путь к фалйу проекта
- /verbosity:m – сколько информации выводить на экран о компиляции и публикации (m типа medium – немного чтобы мы не офигели)
- /t:Build,Clean – тут мы задаем что нужно сделать – построить и очистить
- /p:DeployOnBuild=true – задаем параметром чтобы выполнялось развертывание сайта после его построения
- /p:AllowUntrustedCertificate=true – это если у твоего сервера левый ssl сертификат, ну то есть обязательный параметр
- /p:PublishProfile=%1.ru.pubxml – имя файла-профиля публикации, лежит в папке проекта Properties\PublishProfiles и называется по имени профиля публикации
- /p:UserName=ТУТ_ИМЯ_ПОЛЬЗОВАТЕЛЯ — тут пишешь имя пользователя для подключения к серверу, куда публикуем. По-хорошему нужно для каждого сайта свое имя юзера задать и передавать в функцию compile_and_publish как параметр. Но лень
- /p:Password=%pass% – а вот пароль берем из переменной pass
Удачи в пакетной публикации!
Добавить комментарий