Web Deploy - Как создать пакет с выбранными элементами

Я хотел бы попробовать метод Web Deploy для развертывания нашего веб-сайта. Перед своими вопросами я хотел бы предоставить несколько подробностей о текущей процедуре развертывания:

  1. Это корпоративный сайт, размещенный на нескольких серверах (с непрерывным развертыванием).

  2. Файлы находятся не в режиме "Release", а в режиме "Debug".

  3. Мы вручную копируем и вставляем только текущие файлы, связанные с назначением. Скажем, на этой неделе модуль учетных записей должен быть развернут, а затем файлы, которые будут развернуты,
    / mysite / App_Code / Models / accounts.cs
    / mysite / pages / accounts.aspx, accounts.aspx.cs

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

  4. Проект "mysite" - это "Веб-сайт ASP.NET", а не "Веб-приложение ASP.NET" (в VS2013), что означает, что эти параметры недоступны - Пакет / Публикация в Интернете и Пакет / Публикация SQL

Я создал пакеты в системе разработки,
(i) использование опции публикации (пакета веб-развертывания) в Visual Studio, а также
(ii) экспорт приложения в IIS (дает возможность выбрать файлы)

  1. Можно ли создать пакет только для тех файлов, которые мне нужны (в этом случае accounts.cs, accounts.aspx, accounts.aspx.cs), используя функцию публикации VS.
  2. Можно ли включить в пакет файл пользовательских скриптов SQL? (используя IIS или VS)
  3. Если ответ "Да" для Q2, то он должен быть выполнен только один раз, а не для всех серверов. Потому что есть только один сервер БД. Как это можно сделать.

Я еще не пошел на установку части пакета.

1 ответ

Решение

1 - Не через VS, потому что в MSBuild for Websites нет точки расширения (о которой я знаю). У Сайеда есть отличный пост, в котором описывается, как веб-сайты обрабатываются иначе, чем приложения.

Альтернатива - вы можете скопировать файлы, которые вы хотите развернуть, в новую папку, а затем использовать инструмент командной строки MSDeploy.exe для создания клиентского пакета MSDeploy, который вы можете развернуть на своем сервере.

D:\temp>"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:contentPath=%cd%\DefaultWebSite\website1 -dest:package=DefaultWebSite.zip
Info: Updating MSDeploy.contentPath (MSDeploy.contentPath).
Info: Adding virtual path (D:\temp\DefaultWebSite\website1)
Info: Adding directory (D:\temp\DefaultWebSite\website1).
Total changes: 3 (2 added, 0 deleted, 1 updated, 0 parameters changed, 0 bytes c
opied)

D:\temp>"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package=DefaultWebSite.zip -dest:contentPath="Default Web Site\website2"
Info: Adding MSDeploy.contentPath (MSDeploy.contentPath).
Info: Adding virtual path (Default Web Site\website2)
Info: Adding directory (Default Web Site\website2).
Info: Adding file (Default Web Site\website2\Default.aspx).
Info: Adding file (Default Web Site\website2\Default.aspx.cs).
Info: Adding file (Default Web Site\website2\Web.config).
Total changes: 6 (6 added, 0 deleted, 0 updated, 0 parameters changed, 971 bytes
 copied)

2/3 - Да, вы можете включить SQL в пакет веб-развертывания, но он будет развертываться при каждом развертывании пакета. Мы обнаружили, что лучше разделять наши развертывания SQL в отдельный пакет, поэтому мы можем развертывать его только тогда, когда захотим.

В этом посте описывается, как мы обрабатываем наши развертывания SQL - https://dotnetcatch.com/2016/02/10/deploying-a-database-project-with-msdeploy/