Ну, это зависит от того, чего вы пытаетесь достичь с точки зрения доступности / доступности. Параметры publish / xcopy / installer интересны, но все они не обращают внимания на проблему, которая требует времени для завершения этих параметров. С момента, когда первый файл копируется в каталог, до момента, когда последний файл копируется на сайт, находится в несогласованном состоянии.
Файлы ASPX могут ссылаться на объекты уровня данных, которых еще нет в каталоге bin, или в каталоге bin может быть DLL с измененным набором параметров для функции, но aspx не был установлен тем не менее, aspx все еще ищет старую функцию. Короче говоря, поскольку развертывание не является атомарным процессом, у вас могут возникнуть проблемы.
Мы решили эту проблему, установив новые файлы в новый каталог, а затем зайдя в IIS и изменив веб-сайт, чтобы он указывал на новый каталог. Это делает изменение атомарным процессом и делает вещи намного более гладкими. Это идеально? Нету. У вас могут быть проблемы с состоянием представления или проблемы с сеансом (сеанс сохраняется, но, возможно, новый код ищет в сеансе что-то, что старый код не установил), но все равно делает процесс намного более плавным.
Конечно, ни одно из этих решений не касается другой неатомарной части обновления сайта ... базы данных. Опять же, процесс изменения схемы БД занимает много времени. Вы сначала обновляете код или базу данных? Может ли изменение БД работать без изменения кода (новый столбец, который поддерживает null или имеет значение по умолчанию), или же изменение кода может работать без изменения БД (удаление столбца)? Это индивидуальный анализ, который не рассматривается ни одним из этих решений
Конечно, если вы можете выгнать своих пользователей с сайта на некоторое время, жизнь станет проще, но если вы пытаетесь достичь 100% безотказной работы, это не так просто.