Общие сведения о предварительной компиляции проектов веб-приложений ASP.NET
По умолчанию для предварительной компиляции в единую сборку файлов кода проекта веб-приложения используется Microsoft Build Engine (MSBuild). Компиляция веб-страниц ASP.NET (ASPX), пользовательских элементов управления (ASCX) и представлений MVC Razor (CSHTML и VBHTML) выполняется динамически на сервере с помощью компилятора ASP.NET. При необходимости также можно выполнить предварительную компиляцию веб-страниц, пользовательских элементов управления и представлений Razor.
Примечание
Данный раздел относится только к проектам веб-приложений.Сведения о различиях между проектами веб-приложений и веб-сайтов см. в разделе Сравнение проектов веб-приложений с проектами веб-сайтов в Visual Studio.Сведения о предварительной компиляции проектов веб-сайтов см. в разделе ASP.NET Web Site Project Precompilation Overview.
Модель компиляции
Все файлы кода проекта (автономные файлы, а также файлы с выделенным кодом и классов конструктора) предварительно компилируются в единую сборку. По умолчанию эта сборка создается и сохраняется в папке Bin. Поскольку в этой модели компиляции создается единая сборка, можно задать различные атрибуты, в том числе имя и версию сборки. Также можно задать расположение выходной сборки. Чтобы изменить расположение выходной сборки, в обозревателе решений щелкните правой кнопкой мыши имя проекта, выберите пункт Свойства, затем выберите вкладку Построение. На вкладке Построение имеется поле Выходной путь, в котором можно указать путь к выходной сборке.
Как и проект веб-узла, проект веб-приложения определяется файлом, а не папкой проекта. Файл проекта содержит ссылки на включенные в проект файлы, а также ссылки на сборки и другие параметры метаданных проекта. Файлы, находящиеся в папке проекта, но не определенные в файле проекта, не компилируются в составе проекта веб-приложения. Ссылки на параметры проекта, созданные и измененные в Visual Studio или Visual Web Developer, экспресс-выпуск, сохраняются в файле проекта с расширением PROJ, который создается для каждого проекта.
Для выполнения и отладки страниц следует скомпилировать проект веб-приложения. Однако построение всего проекта веб-приложения может выполняться быстро, так как в Visual Studio и Visual Web Developer, экспресс-выпуск используется инкрементная модель построения, предусматривающая построение только измененных файлов.
Дополнительные сведения см. в разделе Web Application Projects Overview.
Компиляция файлов классов
Для компиляции файлов классов в проектах веб-приложений используется служебная программа MSBuild. Файлы классов компилируются в единую сборку. По умолчанию они сохраняются в папке Bin. Для настройки процесса компиляции можно использовать стандартные правила расширения MSBuild. Дополнительные сведения см. в разделе MSBuild.
В следующей таблице описываются типы компилируемых в единую сборку файлов классов в проектах веб-приложений.
Тип файла класса |
Описание |
---|---|
Автономный |
Файлы класса, которые можно создавать и добавлять в папку Bin. |
Код программной части |
Пользовательский код, определяющий отображение и другое поведение веб-страниц ASP.NET. |
Конструктор |
Автоматически создаваемый код. Изменение файлов с расширением DESIGNER не допускается. |
Параметры настройки компиляции
Имя и версию выходной сборки, а также другие сведения можно задать в окне Конструктор проектов с помощью элементов, расположенных на странице Приложение. В окне Конструктор проектов на странице Построение можно настроить параметры построения проекта. Например, можно установить порядок обработки ошибок, а также сведения о выходных данных сборки. Кроме того, на странице свойств События построения можно добавить действия, выполняемые до и после построения во время компиляции. Дополнительные сведения о страницах свойств см. в разделе Справочник по пользовательскому интерфейсу конструктора проектов.
Установка свойства "Действие при построении"
Если свойству Действие при построении присвоено значение Компилировать, с помощью программы MSBuild по умолчанию компилируются только файлы классов в проектах веб-приложений. Обратите внимание, что файлы классов, содержащиеся в папке App_Code проекта веб-приложения, компилируются с помощью ASP.NET. Компиляция этих файлов выполняется даже в том случае, если значение Компилировать не установлено явно в качестве действия при построении.
Примечание
Папка App_Code существует для проектов веб-сайтов.Эта папка обычно не включается в проекты веб-приложений.Дополнительные сведения о папке App_Code см. в разделе Shared Code Folders in ASP.NET Web Sites.
Динамическая компиляция
Файлы кода предварительно компилируются в единую сборку с помощью программы MSBuild. В то же время, веб-страницы ASP.NET (ASPX), пользовательские элементы управления (ASCX) и представления MVC Razor (CSHTML и VBHTML) проекта веб-приложения компилируются динамически на сервере с помощью компилятора ASP.NET. Это означает, что после компиляции и развертывания веб-страниц ASP.NET, пользовательских элементов управления и представлений Razor в них можно вносить определенные изменения. Например, можно изменить расположение элементов управления, цвет, шрифт и другие параметры, определяющие внешний вид страницы. Когда после внесения таких изменений на сайт поступает первый запрос страницы, ASP.NET перекомпилирует измененные файлы.
Можно определить элемент управления в файле с выделенным кодом, если он является защищенным или общим. Так как ASPX-страница наследует файл кода программной части, эта страница будет использовать такой элемент управления. В следующих случаях рекомендуется помещать определение элемента управления в файл с выделенным кодом.
Тип элемента управления должен наследоваться от встроенного типа ASP.NET.
Необходимо определить отличную от определенной по умолчанию область действия элемента управления. Область ссылается на уровень доступности, такой как public, private, internal, protected и protected internal.
Необходимо добавить атрибуты метаданных в объявление элемента управления.
Необходимо указать комментарии к коду XML в объявлении элемента управления.
Дополнительные сведения о добавлении элементов управления см. в разделе How to: Add Controls to an ASP.NET Web Page Programmatically.
Развертывание
По умолчанию все файлы классов компилируются в единую сборку, поэтому развертывать необходимо только эту сборку вместе с ASPX-, ASCX-, CSHTML- и VBHTML-файлами, а также файлами статического содержимого. В этом случае разметка в ASPX-, ASCX-, CSHTML- и VBHTML-файлах не компилируется в исполняемый код, пока страница не будет запрошена браузером.
Однако можно указать другие параметры компиляции и слияния. Например, можно выполнить предварительную компиляцию файлов ASPX или указать, что следует создать несколько сборок вместо одной. Дополнительные сведения о параметрах компиляции и слияния проекта веб-приложения, а также методах их указания см. в следующих источниках:
Дополнительные сведения о развертывании проектов веб-приложений см. в разделе Карта содержимого веб-развертывания для Visual Studio b ASP.NET.
См. также
Основные понятия
Карта содержимого веб-развертывания для Visual Studio b ASP.NET
Сравнение проектов веб-приложений с проектами веб-сайтов в Visual Studio