У нас есть несколько крупных проектов, которые мы используем для публикации в VS2010 с IIS7. Мы публикуем с опциями «Веб-развертывание». Теперь, когда User1 публикует в первый раз, все файлы будут загружены, будет ли этот пользователь вносить изменения в файл и снова публиковать, будет опубликован только измененный файл. Но User2 публикует позже (тот же проект), но VS / IIS снова загрузит ВСЕ файлы, хотя, возможно, был изменен только 1 файл. После повторной загрузки всех файлов User1 снова должен будет загрузить ВСЕ файлы!
Очень раздражает поведение, и проекты размером 200 МБ публикуются почти за 30 минут. Есть ли параметр, который IIS / VS может лучше проверить, изменился ли файл или нет?
Вам нужно опубликовать только один раз для каждого приложения / машины (хотя вы можете опубликовать на каждом корневом conf / machine). Впоследствии (по крайней мере, в Web Deploy 2.0) вы можете синхронизировать, выполнив msdeploy -verb:sync -source:webServer -dest:webServer,computerName=Server2
Здесь прямо указано, что
Операция синхронизации получает дамп источника, дамп места назначения, а затем выполняет сравнение результатов по узлам. Правила и расширения ссылок проверяют каждый узел, чтобы определить, что нужно добавить, удалить или обновить. Дополнительные сведения о правилах и расширениях ссылок см. В разделах Правила веб-развертывания и Расширения ссылок веб-развертывания.
РЕДАКТИРОВАТЬ 1: смысл msdeploy в том, что он может быть частью непрерывной интеграции. Вероятно, вы можете написать хороший сценарий, который будет выполняться каждый раз, когда вы делаете сборку. Сказав это, если вы пойдете в VS post build события вы можете добавить этот сценарий. Проблема, о которой вы упомянули, может быть ACL, и я думаю, вы можете либо игнорировать ее с помощью ignoreError, либо выполнить окончательное развертывание, которое разрешит ACL от одного пользователя, а затем синхронизируется только от этого пользователя. Последнее также повысит безопасность.