Поделиться через


Пошаговое руководство. Преобразование проекта веб-узла в проект веб-приложения в Visual Studio

Обновлен: Ноябрь 2007

В данном пошаговом руководстве демонстрируются способы преобразования существующего проекта веб-узла Microsoft Visual Studio 2005 в проект веб-приложения Microsoft Visual Studio 2005. Модель проекта веб-приложения использует тот же концептуальный подход, что и веб-проект в Visual Studio .NET 2003. Это подразумевает включение и исключение файлов файлом проекта, а также компиляцию в единую сборку. Дополнительные сведения см. в разделе Преобразование веб-проекта из Visual Studio .NET.

Aa983476.alert_note(ru-ru,VS.90).gifПримечание.

Для создания проектов веб-приложений 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

  1. Откройте существующее решение Visual Studio 2005.

  2. В меню Файл выберите команду Открыть, а затем выберите пункт Веб-узел.

    Откроется диалоговое окно Открыть веб-узел.

  3. Выберите папку проекта, которую необходимо открыть, а затем выберите команду Открыть.

  4. В меню Построение выберите команду Построение веб-узла.

  5. В меню Отладка выберите команду Начать отладку. Вместо этого можно нажать клавишу F5.

    Aa983476.alert_note(ru-ru,VS.90).gifПримечание.

    Если отображается диалоговое окно Отладка не включена, следует выбрать команду Добавить новый файл Web.config с включенной отладкой.

  6. Проверьте работоспособность проекта.

Создание нового проекта веб-приложения Visual Studio 2008

Чтобы выполнить преобразование существующего проекта веб-узла Visual Studio 2005, рекомендуется сначала создать в отдельном каталоге новый проект веб-приложения Visual Studio 2008. Это позволит не изменять части существующих файлов веб-узла. Этот прием также позволяет копировать существующие функциональные возможности в новый проект веб-приложения.

Можно добавить новый проект в существующее решение. Это оптимальный вариант в случае, если имеется несколько используемых проектов библиотеки класса. Кроме того, можно объявить запустить новый экземпляр класса Visual Studio, а затем создать новое решение и проект.

Создание нового проекта приложения Visual Studio 2008 в новом решении

  1. Закройте все открытые решения Visual Studio 2008.

  2. В меню Файл выберите команду Создать, затем выберите пункт Проект.

    Откроется диалоговое окно Создание проекта.

  3. В диалоговом окне Новый проект в разделе Типы проектов разверните узел языка, который планируется использовать, а затем выберите тип проекта Веб, чтобы отобразить шаблоны для веб-проекта.

  4. Выберите пункт Веб-приложение ASP.NET.

  5. Выберите значение для пунктов Имя, Расположение и Имя решения, и нажмите кнопку ОК, чтобы создать проект веб-приложения.

  6. По завершении создания проекта следует удалить файлы Default.aspx и Web.config, которые были созданы автоматически.

Настройка ссылок проекта

Если для проекта веб-узла Visual Studio 2008 требуется дополнительный проект или ссылки на сборку, можно добавить их в проект веб-приложения. Список ссылок по умолчанию можно просмотреть в новых проектах веб-приложений Visual Studio 2008 в узле Ссылки в Обозревателе решений.

Aa983476.alert_note(ru-ru,VS.90).gifПримечание.

Чтобы предотвратить возникновение ошибок, следует перед выполнением преобразования файлов проекта добавить в проект веб-приложения ссылки на сборки, находящиеся в папке "Bin". Дополнительные сведения о том, как добавлять ссылки, см. в описании следующей процедуры.

Дополнительные сведения о ссылках см. в разделе Ссылки проекта.

Добавление ссылок в проект веб-приложения Visual Studio 2008

  1. В Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.

    Появится диалоговое окно Добавление ссылки.

  2. Выберите ссылку, которую необходимо добавить, и нажмите кнопку ОК.

  3. В Обозревателе решений щелкните правой кнопкой мыши веб-приложение и выберите команду Построить.

    Visual Studio выполнит построение проекта и проверку работоспособности ссылок проекта на проект.

Копирование файлов в проект веб-приложения

Рекомендуется добавлять существующие файлы путем копирования файлов из каталога проекта веб-узла Visual Studio 2008 в каталог проекта веб-приложения.

Aa983476.alert_note(ru-ru,VS.90).gifПримечание.

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

Копирование проекта веб-узла в проект веб-приложения

  1. В Обозревателе решений щелкните правой кнопкой мыши проект веб-узла и выберите команду Открыть папку в проводнике Windows.

  2. Выберите файлы, которые необходимо скопировать, в проекте веб-узла.

  3. Щелкните правой кнопкой мыши выбранные файлы и выберите команду Копировать.

  4. В проекте веб-приложения щелкните правой кнопкой мыши проект веб-приложения и выберите команду Открыть папку в проводнике Windows.

  5. Вставьте файлы проекта веб-узла в каталог веб-приложения.

  6. В Обозревателе решений в проекте веб-приложения выберите команду Показать все файлы.

  7. Выберите новые файлы в Обозревателе решений.

  8. Щелкните правой кнопкой мыши выбранные файлы и выберите команду Включить в проект.

Разница между проектом веб-узла 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.

Преобразование страниц и классов для использования частичных классов в проекте веб-приложения

  1. В Обозревателе решений щелкните правой кнопкой мыши корневую папку проекта, содержащую страницы и классы, которые необходимо преобразовать, а затем выберите команду Преобразовать в веб-приложение.

  2. Выполните построение проекта, чтобы выявить ошибки компиляции.

Если ошибки обнаружены, скорее всего, они возникли в силу одной из двух следующих причин:

  • Пропущена ссылка на сборку, которая должна быть добавлена в проект.

  • Проблемы с динамически созданным типом, например с объектом 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 с помощью команды контекстного меню Разместить во фрагменте в редакторе кода С#.

Добавление пространства имен в существующие классы

  1. Откройте файл кода, который необходимо изменить.

  2. Выберите класс (или несколько классов) в редакторе исходного кода, щелкните правой кнопкой мыши выделенный код и выберите команду Разместить во фрагменте.

  3. Выберите из списка элемент Пространство имен.

Файлы с расширениями ASPX, ASCX, MASTER, ASHX, ASMX и ASAX содержат директивы (например, директиву @ Page) с атрибутом Inherits или Class, которая перечисляет имена классов, которые они вызывают, если являются страницами фонового кода. При добавлении пространств имен к файлам с выделенным кодом, относящихся к указанным типам, следует также добавлять пространство имен к объявлениям Inherits и Class. Например, при добавлении пространства имен WebApplication5 в файл с выделенным кодом страницы с именем Details.aspx следует также изменить значение атрибута Inherits директивы @ Page с inherits=Details_aspx на inherits=WebApplication5.Details_aspx.

Aa983476.alert_note(ru-ru,VS.90).gifПримечание.

Если необходимо несколько раз обновить пространство имен в файле, можно воспользоваться функцией "найти и заменить" в редакторе Visual Studio.

Дополнительные сведения об использовании команды Разместить во фрагменте см. в разделе Практическое руководство. Использование окружающих фрагментов кода.

Преобразование декларативных типизированных наборов данных

Если проект веб-узла Visual Studio 2008 содержит классы строго типизированного набора данных в папке App_Code, следует внести дополнительные изменения, чтобы исправить элемент connectionString в файле Web.config. Необходимо также переустановить элемент connectionString для каждого объекта TableAdapter в классе набора данных.

Исправление элемента connectionString строго типизированного набора данных

  1. В Обозревателе решений правой кнопкой мыши щелкните класс набора данных в папке App_Code, а затем выберите пункт Конструктор представлений.

    Для набора данных отобразится окно Конструктор.

    Aa983476.alert_note(ru-ru,VS.90).gifПримечание.

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

  2. Щелкните правой кнопкой мыши объект TableAdapter и выберите пункт Свойства.

  3. Выберите свойство Connection и переустановите подключение путем выбора доступного параметра.

    При обновлении подключения обновится также ссылка строки подключения.

  4. Повторно выполните описанные шаги для каждого объекта 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

Ссылки

Страница "Веб" в конструкторе проектов

@ Page