MSDeploy не может удалить файлы - PullRequest
1 голос
/ 24 августа 2011

У меня настроена сборка TFS для сборки и развертывания веб-приложения. Я передаю параметры MSDeploy через аргументы MSBuild определения сборки TFS. Первый раз это работает нормально. Когда кто-то получает доступ к веб-приложению, один из элементов управления (элемент управления диаграммами Microsoft) создает пару файлов в пустой директории, которую я добавил в решение.

Когда я иду на перестройку (или запускается непрерывная интеграция), следующая сборка обычно завершается неудачей, потому что она не может удалить один из сгенерированных файлов. Когда я пытаюсь вручную удалить файл, он говорит мне, что рабочий процесс IIS использует его, и он не может быть удален.

Теперь, чтобы получить сборку, мне придется каждый раз вручную перезагружать IIS, что нежелательно с учетом CI. Я посмотрел через Microsoft.Web.Publishing.Tasks.dll и там нет ничего, чтобы перезапустить IIS с помощью MSDeploy.

В данный момент я думаю, что добавление заглушек временных файлов в решение может быть решением (возможно, MSDeploy сможет закрыть процесс, если файл является постоянной частью развертывания), или я мог бы сделать некоторые неприятность с Exec в файле решения для сброса IIS.

Это, вероятно, длинный выстрел, но кто-нибудь сталкивался с этим и нашел хорошее решение?

1 Ответ

0 голосов
/ 24 августа 2011

Вы можете использовать MSBuild Extension Pack для автоматической остановки пула приложений перед развертыванием.В пространстве имен MSBuild.ExtensionPack.Web есть несколько задач для управления IIS, таких как остановка и запуск пула приложений, удаление приложения и т. Д.

...