Преобразование веб-решений и файлов проекта

Visual Studio 2010

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

В Visual Studio 2005 модель веб-проектов была изменена в ряде отношений. Например, наличие файла проекта больше не требуется, поскольку все файлы в папке веб-приложения считаются частью веб-проекта.

Новая модель веб-проектов влияет на преобразование таких файлов, как страницы веб-форм ASP.NET (файлы ASPX), пользовательские элементы управления ASP.NET (файлы ASCX), файл Global.asax и файл Web.config. Конкретные изменения в этих файлах зависят от языка программирования преобразуемого проекта.

Измененная в Visual Studio 2005 модель выделения кода использует разделяемые классы, что позволяет определять класс в нескольких файлах. В предыдущей модели выделения кода файл ASPX наследует от компилированного файла класса, создаваемого по соответствующему файлу c кодом программной части (ASPX.VB или ASPX.CS). В новой модели выделения кода файл ASPX наследует от компилированного класса, состоящего из соответствующего файла ASPX.VB или ASPX.CS, а также файла-заглушки, создаваемого по файлу ASPX и содержащего объявления полей для элементов управления, используемых в файле ASPX. Это изменение позволяет отделить автоматически создаваемый код от пользовательского кода. Пользовательские элементы управления (ASCX) и файлы кода программной части пользовательских элементов управления взаимодействуют аналогичным образом. Дополнительные сведения о модели выделения кода см. в разделе Модель кода веб-страниц ASP.NET.

В Visual Studio 2005 изменена модель компиляции: вместо создания одной сборки теперь создается несколько сборок. Каждая веб-страница ASP.NET или пользовательский элемент управления можно скомпилировать в отдельную сборку. Это изменение позволяет реализовать большее количество сценариев развертывания, например, публикацию исходного кода на сервере с динамической компиляцией частей веб-приложения по мере необходимости.

При преобразовании к новой модели выделения кода ASP.NET версии  2.0 в веб-страницах ASP.NET и пользовательских элементах управления происходят следующие изменения:

  • Атрибут CodeBehind в директиве @ Page заменяется на атрибут CodeFile.

  • К директиве @ Page добавляется атрибут Inherits, указывающий на файл класса, связанный по компиляции.

  • Изменяются все определения классов с выделенным кодом: теперь в них используется ключевое слово Partial.

  • Объявления членов пользовательских элементов управления удаляются со страницы с выделенным кодом. В модели связанной компиляции экземпляры пользовательских элементов управления создаются автоматически на основе декларативного кода.

  • События привязываются к элементам управления с помощью декларативного синтаксиса. Например, событие Click элемента управления Button привязывается к элементу управления путем добавления атрибута OnClick к элементу asp:button в декларативном коде. Делегаты и ключевые слова Visual Basic Handles удаляются из методов. Не удаляются делегаты членов, не представленных в декларативном коде, например делегаты для динамически создаваемых элементов управления.

  • Объявления членов в файлах классов (но не в классах страниц), помеченные как Friend или Internal, изменяются на Public.

  • Точки останова отладчика не преобразуются и не отображаются в преобразованных файлах.

    421whcfb.alert_note(ru-ru,VS.100).gifПримечание.

    Если веб-страница или пользовательский элемент управления не содержат атрибут CodeBehind в директиве @ Page, то преобразования не происходит. Аналогично, веб-страницы и элементы управления, содержащие атрибут Src, оставляются без изменений.

В автономных файлах кода происходят следующие изменения:

  • Автономные файлы кода перемещаются в каталог App_Code.

  • Объявления членов, помеченные как Friend или Internal, изменяются на Public. Такое изменение необходимо, поскольку при наличии нескольких сборок уровень доступа должен допускать доступ к членам из сборок, отличных от сборки, содержащей скомпилированный автономный файл кода.

  • Вызовы метода Type.GetType заменяются на вызовы метода BuildManager.GetType. Метод BuildManager.GetType ищет типы в сборках верхнего уровня.

  • Точки останова отладчика не преобразуются и не отображаются в преобразованных файлах.

Во время преобразования параметры страницы, относящиеся к конструктору, подвергаются различным изменениям:

  • Атрибут MS_POSITIONING (потоковый макет или макет сетки) не изменяется, и Visual Studio сохраняет этот параметр вместе с абсолютными атрибутами позиционирования отдельных элементов управления. Тем не менее, по умолчанию новые страницы в Visual Studio используют потоковый макет и не включают атрибут MS_POSITIONING.

  • Тег <meta>, отвечающий за язык клиентских сценариев по умолчанию, остается без изменений.

Во время преобразования файла Global.asax его файл кода программной части перемещается в каталог App_Code. В процессе преобразования производятся следующие изменения:

  • Атрибуты CodeBehind и Inherits удаляются из директивы @ Application - Global.asax.

  • Атрибут Language добавляется к директиве @ Page, если он не был добавлен ранее.

  • В случае Visual Basic оператор Namespace добавляется к файлу класса. Пространство имен определяется по корневому пространству имен в веб-проекте.

В Visual Studio 2005 файл Web.config поддерживает более широкий набор элементов по сравнению с Visual Studio .NET. Например, параметры проекта, относящиеся к Visual Studio, зачастую переносятся в файл Web.config. Дополнительные сведения см. в разделе Преобразование параметров веб-проекта.

Показ: