Как я могу использовать функцию «Опубликовать» в Visual Studio 2008, не стирая содержимое целевой папки?

Когда я использую Build-> Publish Web Site в Visual Studio 2008, большую часть времени он компилирует сайт, а затем просто спрашивает меня: «Все файлы в целевой папке будут удалены. Продолжить?» (Или что-то в этом роде). Однако при публикации проекта в Visual Studio иногда появлялось диалоговое окно, в котором можно было бы выбрать полностью заменить содержимое папки или просто заменить измененные файлы более новой версией.

Я предпочитаю публиковать без полного уничтожения папки, потому что развернутое приложение создает пользовательские файлы и файлы кэша, поскольку оно используется, и я не хочу предпринимать дополнительные шаги для сохранения. Однако я не уверен, почему Visual Studio не всегда дает мне такую ​​возможность. Это где-то настройка, которую я могу изменить? Это связано с версией .NET, которую я использую?

Любое понимание приветствуется!

Редактировать - Продолжение на 2009-01-20

Я до сих пор не понял, но вот еще немного информации.

Вот как выглядит функция публикации для одного проекта ASP.NET на моем рабочем столе Win XP:

А вот как это выглядит для другого проекта на моем ноутбуке Vista:

Обратите внимание на переключатели на втором снимке экрана, которые позволяют мне выбрать либо удалить содержимое папки перед публикацией, либо просто перезаписать соответствующие файлы. Я хотел бы иметь эти варианты для каждого проекта.

Оба компьютера работают под управлением Visual Studio 2008 Professional (версия 9.0.30729.1 SP, согласно Справка-> О программе). Точно такая же версия. И я сомневаюсь, что разница в ОС вызывает изменение этой функциональности. Это должно быть где-то обстановка, верно? Кто-нибудь знает?

10.12.2008 22:02:31
6 ОТВЕТОВ
РЕШЕНИЕ

Джон прав , единственное отличие в том, что один из ваших проектов - это проект веб-сайта, а другой - проект веб-приложения . Вы не увидите опцию « конвертировать в веб-приложение », если не участвуете в проекте веб-приложения . Я знаю ... это очень вводит в заблуждение. Причиной этого является то, как вы конвертируете в проект веб-приложения . Если вы планируете конвертировать его (что может быть реальной болью в заднице, в зависимости от того, как он настроен), то вам нужно знать о нескольких различиях:

В проекте веб-приложения все предварительно скомпилировано, все страницы с кодами будут скомпилированы в .dll ---- В проекте веб-сайта ничего в проекте предварительно не скомпилировано, компилятор скомпилирует все, чтобы убедиться, что он действителен, но ни одна из скомпилированных страниц не загружена. Когда пользователь впервые пытается получить доступ к сайту, каждая страница компилируется в свою собственную dll. Это означает, что в проекте веб-сайта вы можете загрузить один файл с задним кодом.

Пространства имен. В проекте веб-приложений пространства имен создаются по умолчанию, а в проекте веб-сайта - нет. Поэтому вам, возможно, придется потратить некоторое время на их добавление, если вы планируете их преобразовать.

Файлы проекта - вы заметите, что у проекта веб-сайта нет файла "cproj", который есть у проекта веб-приложения .

Я преобразовал некоторые из этих проектов, которые, на мой взгляд, идут довольно гладко, если в папке «app_code» не так много кода. Вы можете попробовать и посмотреть, насколько это легко, если кажется, что это будет больно, я бы предложил FileZilla просто отправить его по FTP и избавить себя от головной боли.

Удачи

12
20.08.2012 20:21:09

Я думаю, что реальный ответ на ваш вопрос заключается в том, что вы должны поместить свои пользовательские файлы и файлы кэша в другое место.

При публикации веб-сайта Visual Studio предназначена для того, чтобы убедиться, что в целевой папке содержатся файлы вашего веб-сайта и ничего больше.

0
10.12.2008 22:24:57
В идеале да. Но я не единственный разработчик в своей организации, и некоторые вещи находятся вне моего контроля.
Joshua Carmody 20.01.2009 16:32:03

Очевидно, эта функция появится в VS2010 - это то, что Вишал Джоши объявил на TechEd EMEA на сессии «PDC307: Microsoft Visual Studio 10: будущее веб-разработки»

0
11.12.2008 11:54:15
Но у меня уже есть это в VS2008! Я просто не могу понять, почему это работает для одних проектов, а не для других.
Joshua Carmody 20.01.2009 16:32:55
Похоже, что это разные типы проектов: один - это веб-сайт или проект приложения, а другой - проект веб-развертывания. Дело в том, что развертывание сайта с использованием любого из них все равно удалит все файлы, которые не являются частью проекта - Vista просто не будет загружать файлы, которые не изменились.
Zhaph - Ben Duguid 20.01.2009 21:44:18

Этот диалог отличается для проектов веб-сайтов и проектов веб-приложений. В моих проектах MVC (проекты веб-приложений) я вижу дополнительные опции. В моем обычном старом веб-проекте я вижу первый опубликованный диалог.

3
30.01.2009 15:55:49
Хм ... это полезное наблюдение. Но вы уверены, что это единственная разница? Я уверен, что оба проекта, о которых я упоминал выше, являются обычными проектами веб-сайтов. Тот, у которого есть опция «не перезаписывать», имеет опцию «конвертировать в веб-приложение», когда я щелкаю правой кнопкой мыши по решению.
Joshua Carmody 30.01.2009 16:28:38
На моей машине это разница. Используете ли вы проекты веб-развертывания или они установлены?
John Sheehan 30.01.2009 17:03:06

Сайт был обновлен с сайта в обновленном слое.

-2
10.06.2010 10:13:46
Уххх ... что? Я не понимаю
Joshua Carmody 10.06.2010 13:36:15

Не уверен, что эта опция подойдет вам, но вы можете использовать функцию копирования веб-сайта из обозревателя решений. Нажмите на значок «Копировать веб-сайт» в верхней части обозревателя решений.

1
12.10.2010 22:05:54