Преобразование веб-решений и файлов проекта
Обновлен: Ноябрь 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.
Точки останова отладчика не преобразуются и не отображаются в преобразованных файлах.
Примечание. Если веб-страница или пользовательский элемент управления не содержат атрибут 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
Во время преобразования файла Global.asax его файл кода программной части перемещается в каталог App_Code. В процессе преобразования производятся следующие изменения:
Атрибуты CodeBehind и Inherits удаляются из директивы @ Application - Global.asax.
Атрибут Language добавляется к директиве @ Page, если он не был добавлен ранее.
В случае Visual Basic оператор Namespace добавляется к файлу класса. Пространство имен определяется по корневому пространству имен в веб-проекте.
Файл Web.config
В Visual Studio 2005 файл Web.config поддерживает более широкий набор элементов по сравнению с Visual Studio .NET. Например, параметры проекта, относящиеся к Visual Studio, зачастую переносятся в файл Web.config. Дополнительные сведения см. в разделе Преобразование параметров веб-проекта.
См. также
Основные понятия
Преобразование веб-проекта из Visual Studio .NET
Преобразование параметров веб-проекта