Пошаговое руководство. Преобразование проекта веб-узла в проект веб-приложения в Visual Studio
Обновлен: Ноябрь 2007
В данном пошаговом руководстве демонстрируются способы преобразования существующего проекта веб-узла Microsoft Visual Studio 2005 в проект веб-приложения Microsoft Visual Studio 2005. Модель проекта веб-приложения использует тот же концептуальный подход, что и веб-проект в Visual Studio .NET 2003. Это подразумевает включение и исключение файлов файлом проекта, а также компиляцию в единую сборку. Дополнительные сведения см. в разделе Преобразование веб-проекта из Visual Studio .NET.
Примечание. |
---|
Для создания проектов веб-приложений ASP.NET используется Visual Studio или Visual Web Developer, экспресс-выпуск. |
В данном пошаговом руководстве рассматриваются следующие задачи:
Открытие и проверка проектов веб-узла Visual Studio 2005.
Создание нового проекта веб-приложения Visual Studio 2008.
Настройка ссылок проекта.
Копирование файлов в новый проект веб-приложения.
Преобразование файлов проекта.
Запуск проекта веб-приложения.
Добавление синтаксиса пространства имен.
Преобразование декларативных типизированных наборов данных.
Преобразование кода объекта профиля.
Необходимые компоненты
Для выполнения инструкций данного пошагового руководства необходимы следующие компоненты:
Visual Studio 2008 или Microsoft Visual Studio 2005 с пакетом обновления 1 (SP1) или Visual Web Developer, экспресс-выпуск
.NET Framework, версия 2.0.
Открытие и проверка проекта веб-узла Visual Studio 2005
Перед выполнением преобразования проекта необходимо проверить правильность его работы. Это поможет предотвратить возникновение ошибок во время преобразования.
Открытие и проверка проекта веб-узла Visual Studio 2005
Откройте существующее решение Visual Studio 2005.
В меню Файл выберите команду Открыть, а затем выберите пункт Веб-узел.
Откроется диалоговое окно Открыть веб-узел.
Выберите папку проекта, которую необходимо открыть, а затем выберите команду Открыть.
В меню Построение выберите команду Построение веб-узла.
В меню Отладка выберите команду Начать отладку. Вместо этого можно нажать клавишу F5.
Примечание. Если отображается диалоговое окно Отладка не включена, следует выбрать команду Добавить новый файл Web.config с включенной отладкой.
Проверьте работоспособность проекта.
Создание нового проекта веб-приложения Visual Studio 2008
Чтобы выполнить преобразование существующего проекта веб-узла Visual Studio 2005, рекомендуется сначала создать в отдельном каталоге новый проект веб-приложения Visual Studio 2008. Это позволит не изменять части существующих файлов веб-узла. Этот прием также позволяет копировать существующие функциональные возможности в новый проект веб-приложения.
Можно добавить новый проект в существующее решение. Это оптимальный вариант в случае, если имеется несколько используемых проектов библиотеки класса. Кроме того, можно объявить запустить новый экземпляр класса Visual Studio, а затем создать новое решение и проект.
Создание нового проекта приложения Visual Studio 2008 в новом решении
Закройте все открытые решения Visual Studio 2008.
В меню Файл выберите команду Создать, затем выберите пункт Проект.
Откроется диалоговое окно Создание проекта.
В диалоговом окне Новый проект в разделе Типы проектов разверните узел языка, который планируется использовать, а затем выберите тип проекта Веб, чтобы отобразить шаблоны для веб-проекта.
Выберите пункт Веб-приложение ASP.NET.
Выберите значение для пунктов Имя, Расположение и Имя решения, и нажмите кнопку ОК, чтобы создать проект веб-приложения.
По завершении создания проекта следует удалить файлы Default.aspx и Web.config, которые были созданы автоматически.
Настройка ссылок проекта
Если для проекта веб-узла Visual Studio 2008 требуется дополнительный проект или ссылки на сборку, можно добавить их в проект веб-приложения. Список ссылок по умолчанию можно просмотреть в новых проектах веб-приложений Visual Studio 2008 в узле Ссылки в Обозревателе решений.
Примечание. |
---|
Чтобы предотвратить возникновение ошибок, следует перед выполнением преобразования файлов проекта добавить в проект веб-приложения ссылки на сборки, находящиеся в папке "Bin". Дополнительные сведения о том, как добавлять ссылки, см. в описании следующей процедуры. |
Дополнительные сведения о ссылках см. в разделе Ссылки проекта.
Добавление ссылок в проект веб-приложения Visual Studio 2008
В Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.
Появится диалоговое окно Добавление ссылки.
Выберите ссылку, которую необходимо добавить, и нажмите кнопку ОК.
В Обозревателе решений щелкните правой кнопкой мыши веб-приложение и выберите команду Построить.
Visual Studio выполнит построение проекта и проверку работоспособности ссылок проекта на проект.
Копирование файлов в проект веб-приложения
Рекомендуется добавлять существующие файлы путем копирования файлов из каталога проекта веб-узла Visual Studio 2008 в каталог проекта веб-приложения.
Примечание. |
---|
Если мастер настройки источника данных запускается во время процесса копирования, следует выбрать команду Отмена в диалоговом окне мастера и продолжить копирование остальных файлов. |
Копирование проекта веб-узла в проект веб-приложения
В Обозревателе решений щелкните правой кнопкой мыши проект веб-узла и выберите команду Открыть папку в проводнике Windows.
Выберите файлы, которые необходимо скопировать, в проекте веб-узла.
Щелкните правой кнопкой мыши выбранные файлы и выберите команду Копировать.
В проекте веб-приложения щелкните правой кнопкой мыши проект веб-приложения и выберите команду Открыть папку в проводнике Windows.
Вставьте файлы проекта веб-узла в каталог веб-приложения.
В Обозревателе решений в проекте веб-приложения выберите команду Показать все файлы.
Выберите новые файлы в Обозревателе решений.
Щелкните правой кнопкой мыши выбранные файлы и выберите команду Включить в проект.
Разница между проектом веб-узла Visual Studio 2008 и проектом веб-приложения Visual Studio 2008 заключается в том, что модель проекта веб-узла динамически создает частичный класс, созданный с помощью инструмента.
После копирования файлов из проекта веб-узла в проект веб-приложения файлы с выделенным кодом для каждой страницы и пользовательский элемент управления все равно будут связаны с файлами ASPX, MASTER и ASCX. Файлы DESIGNER.CS и DESIGNER.VB не создавались. На следующем этапе выполняется преобразование данных страниц, чтобы сохранить их частичные классы в файле DESIGNER.CS или DESIGNER.VB.
Преобразование файлов проекта
Visual Studio предоставляет возможность преобразования страниц и классов в проектах веб-приложения для использования частичных классов. Частичные классы используются для разделения разметки в странице или пользовательском элементе управления фонового кода. Данные классы, созданные конструктором, хранятся в файле отдельно от файла с выделенным кодом.
Вследствие процесса преобразования Visual Studio 2008 рекурсивно рассматривает каждую страницу, главную страницу и пользовательский элемент управления в проекте, и автоматически создает файл DESIGNER.CS для каждого из них. Кроме того, Visual Studio также изменяет ASPX или ASCX-файлы для использования атрибута codeBehind вместо атрибута codeFile. Данная команда также переименовывает папку App_Code в Old_App_Code.
Преобразование страниц и классов для использования частичных классов в проекте веб-приложения
В Обозревателе решений щелкните правой кнопкой мыши корневую папку проекта, содержащую страницы и классы, которые необходимо преобразовать, а затем выберите команду Преобразовать в веб-приложение.
Выполните построение проекта, чтобы выявить ошибки компиляции.
Если ошибки обнаружены, скорее всего, они возникли в силу одной из двух следующих причин:
Пропущена ссылка на сборку, которая должна быть добавлена в проект.
Проблемы с динамически созданным типом, например с объектом Profile или типизированным набором данных.
Если пропущена ссылка на сборку, следует открыть диспетчер ссылок и добавить недостающую ссылку. Если используется динамически созданный тип, см. подразделы Преобразование декларативных типизированных наборов данных и Преобразование кода объекта профиля ниже в этом разделе.
Поскольку ASP.NET версии 2.0 выполняет динамическую компиляцию всех классов в папке App_Code, не следует хранить в этой папке классы, компиляция которой выполняется в рамках веб-приложения Visual Studio 2008. В противном случае компиляция класса будет выполнена дважды. В первый раз компиляция выполняется в рамках сборки проекта веб-приложения Visual Studio 2008, а второй раз во время выполнения ASP.NET. Это может стать причиной возникновения исключения "не удается загрузить тип", которое возникает вследствие дублирования имен типов в приложении.
Вместо этого следует хранить файлы класса в любой папке проекта, кроме папки App_Code. Файлы сохраняются автоматически с помощью команды Преобразовать в веб-приложение, которая переименовывает папку в Old_App_Code.
Запуск проекта веб-приложения
Теперь можно скомпилировать и запустить приложение. По умолчанию Visual Studio 2008 использует встроенный сервер разработки ASP.NET для запуска узла. Кроме того, можно настроить проект для использования служб IIS. Для управления параметрами проекта веб-приложения щелкните правой кнопкой мыши проект и выберите пункт Свойства. Затем можно выбрать вкладку Web и конфигурировать параметры времени выполнения.
Дополнительные сведения см. в разделе Страница "Веб" в конструкторе проектов.
Дополнительные параметры преобразования
При выполнении преобразования проекта в проект веб-приложения следует принять во внимание несколько дополнительных параметров преобразования. К данным параметрам относятся следующие:
Добавление синтаксиса пространства имен.
Преобразование декларативных типизированных наборов данных.
Преобразование кода объекта профиля.
Добавление синтаксиса пространства имен
По умолчанию страницы и классы, построение которых выполнялось с помощью модели проекта веб-узла Visual Studio 2008, автоматически не содержат пространство имен кода. Однако страницы, элементы управления и классы, построение которых выполнялось с помощью модели проекта веб-приложения Visual Studio 2008, автоматически включают пространство имен кода. При выполнении преобразования проекта веб-узла в проект веб-приложения необходимо добавить в код пространство имен.
Например, при работе с С# можно добавлять пространства имен в код в существующих классах в рамках Visual Studio с помощью команды контекстного меню Разместить во фрагменте в редакторе кода С#.
Добавление пространства имен в существующие классы
Откройте файл кода, который необходимо изменить.
Выберите класс (или несколько классов) в редакторе исходного кода, щелкните правой кнопкой мыши выделенный код и выберите команду Разместить во фрагменте.
Выберите из списка элемент Пространство имен.
Файлы с расширениями ASPX, ASCX, MASTER, ASHX, ASMX и ASAX содержат директивы (например, директиву @ Page) с атрибутом Inherits или Class, которая перечисляет имена классов, которые они вызывают, если являются страницами фонового кода. При добавлении пространств имен к файлам с выделенным кодом, относящихся к указанным типам, следует также добавлять пространство имен к объявлениям Inherits и Class. Например, при добавлении пространства имен WebApplication5 в файл с выделенным кодом страницы с именем Details.aspx следует также изменить значение атрибута Inherits директивы @ Page с inherits=Details_aspx на inherits=WebApplication5.Details_aspx.
Примечание. |
---|
Если необходимо несколько раз обновить пространство имен в файле, можно воспользоваться функцией "найти и заменить" в редакторе Visual Studio. |
Дополнительные сведения об использовании команды Разместить во фрагменте см. в разделе Практическое руководство. Использование окружающих фрагментов кода.
Преобразование декларативных типизированных наборов данных
Если проект веб-узла Visual Studio 2008 содержит классы строго типизированного набора данных в папке App_Code, следует внести дополнительные изменения, чтобы исправить элемент connectionString в файле Web.config. Необходимо также переустановить элемент connectionString для каждого объекта TableAdapter в классе набора данных.
Исправление элемента connectionString строго типизированного набора данных
В Обозревателе решений правой кнопкой мыши щелкните класс набора данных в папке App_Code, а затем выберите пункт Конструктор представлений.
Для набора данных отобразится окно Конструктор.
Примечание. Во время настройки подключения набора данных можно дважды щелкнуть мышью набор данных, чтобы отобразить его в конструкторе.
Щелкните правой кнопкой мыши объект TableAdapter и выберите пункт Свойства.
Выберите свойство Connection и переустановите подключение путем выбора доступного параметра.
При обновлении подключения обновится также ссылка строки подключения.
Повторно выполните описанные шаги для каждого объекта TableAdapter в каждом наборе данных.
Преобразование кода объекта профиля
В ASP.NET версии 2.0 добавлена поддержка свойств профиля. Данная функциональная возможность позволяет хранить и извлекать данные профиля пользователя в базе данных персонализации. В проектах веб-узла Visual Studio 2008 ASP.NET автоматически добавляет объект Profile (экземпляр класса ProfileCommon) на каждую веб-страницу ASP.NET в проекте. Этот объект предоставляет строго типизированный доступ ко всем свойствам, определенным в разделе профиля в файле Web.config. Для данного объекта можно получить данные IntelliSense и автоматически сохранять и извлекать оттуда значения.
Например, файл Web.config приложения может содержать следующий раздел:
<profile defaultProvider="AspNetSqlProfileProvider">
<properties>
<add name="Teachers"
type="Teachers"
allowAnonymous="true" />
</properties>
</profile>
В этом случае можно добавить следующий код на страницу, чтобы сохранять и извлекать сведения об объекте Teachers, как показано в примере ниже.
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("Scott"));
teachers.Add(new Teacher("Bob"));
teachers.Add(new Teacher("Paul"));
Profile.Teachers = teachers;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim teachers As New Teachers()
teachers.Add(New Teacher("Scott"))
teachers.Add(New Teacher("Bob"))
teachers.Add(New Teacher("Paul"))
Profile.Teachers = teachers
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
GridView1.DataSource = Profile.Teachers
GridView1.DataBind()
End Sub
End Class
Проект веб-приложения Visual Studio 2008 не включает автоматически класс ProfileCommon. Тем не менее можно создать собственный класс ProfileCommon, содержащий строго типизированные свойства для элементов, настроенных в системе профиля. Далее можно получить доступ к текущим свойствам Profile объекта HttpContext, чтобы получать и задавать свойства. В следующем примере показано создание пользовательского класса ProfileCommon, содержащегося в файле Class1.cs (Class1.vb для Visual Basic).
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Profile;
namespace WebApplication1
{
public class ProfileCommon
{
public Teachers Teachers
{
get
{
return (Teachers) HttpContext.Current.Profile.GetPropertyValue("Teachers");
}
set
{
HttpContext.Current.Profile.SetPropertyValue("Teachers",value);
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Web
Imports System.Web.Profile
Namespace WebApplication1
Public Class ProfileCommon
Public Property Teachers() As Teachers
Get
Return DirectCast(HttpContext.Current.Profile.GetPropertyValue("Teachers"), Teachers)
End Get
Set(ByVal value As Teachers)
HttpContext.Current.Profile.SetPropertyValue("Teachers", value)
End Set
End Property
End Class
End Namespace
Затем можно добавить экземпляр класса ProfileCommon с именем Profile на страницу, которая должна использовать систему профиля, как показано в следующем примере.
public partial class _Default : System.Web.UI.Page
{
ProfileCommon Profile = new ProfileCommon();
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("scott"));
teachers.Add(new Teacher("bob"));
teachers.Add(new Teacher("paul"));
Profile.Teachers = teachers;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}
Public Partial Class _Default
Inherits System.Web.UI.Page
Public Profile As New ProfileCommon()
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim teachers As New Teachers()
teachers.Add(New Teacher("scott"))
teachers.Add(New Teacher("bob"))
teachers.Add(New Teacher("paul"))
Profile.Teachers = teachers
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)
GridView1.DataSource = Profile.Teachers
GridView1.DataBind()
End Sub
End Class
Другой код на странице изменять необязательно. Можно использовать систему профилей так же, как в исходном проекте веб-узла. Дополнительные сведения см. в разделе Общие сведения о свойствах профилей ASP.NET.
См. также
Задачи
Практическое руководство. Использование окружающих фрагментов кода
Основные понятия
Преобразование веб-проекта из Visual Studio .NET
Общие сведения о свойствах профилей ASP.NET