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


Общие сведения о предварительной компиляции в ASP.NET

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

ASP.NET позволяет производить предварительную компиляцию веб-узла до того, как он станет доступен пользователям. Это дает множество преимуществ, таких как уменьшенное время отклика, проверка ошибок, защита исходного кода и эффективное использование.

Проект можно также скомпилировать при помощи модели проекта веб-приложения. Все файлы кода (автономные файлы, файлы кода программной части и файлы классов) в проекте компилируются в единую сборку и хранятся в директории Bin. Поскольку при компиляции создается единая сборка, можно задать атрибуты, такие как имя и версия сборки. Также можно указать расположение выходной сборки, если не требуется, чтобы она находилась в директории Bin. Дополнительные сведения см. в разделе Компиляция проектов веб-приложений.

В этом разделе рассматриваются следующие темы:

  • Сценарии

  • Функциональные возможности предварительной компиляции

  • Общие сведения

  • Примеры кода

Функциональные возможности

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

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

  • Средства обнаружения ошибок при компиляции до посещения пользователем узла.

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

К началу

Общие сведения

По умолчанию веб-узлы и файлы кода в ASP.NET динамически компилируются при первом пользовательском запросе ресурса, например, страницы на веб-узле. После первой компиляции страниц и файлов кода производится кэширование скомпилированных ресурсов. Таким образом, последующие запросы этой же страницы обрабатываются очень эффективно.

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

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

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

Кроме того, можно произвести предварительную компиляцию узла, чтобы сделать его обновляемым или доступным только для чтения. Следующие подразделы содержат дополнительные сведения о каждом варианте.

Предварительная компиляция на месте

Производительность веб-узла можно улучшить путем предварительной компиляции. Предварительная компиляция производится обычно на узлах, веб-страницы ASP.NET и файлы кодов которых часто меняются или дополняются. На быстро работающем веб-узле дополнительное время, которое требуется для динамической компиляции новых и измененных страниц, может повлиять на качественное восприятие пользователем узла.

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

При предварительной компиляции производится компиляция всех типов файлов ASP.NET (файлы HTML, изображения и другие статические файлы не из ASP.NET остаются неизменными). Процесс предварительной компиляции следует логике, используемой ASP.NET при динамической компиляции, включая взаимозависимости между файлами. Во время предварительной компиляции компилятор создает сборки для всех исполняемых выходных данных и сохраняет их в отдельной папке в разделе %SystemRoot%\Microsoft.NET\Framework\version\Temporary ASP.NET Files. Таким образом, для выполнения запросов ASP.NET использует сборки из этой папки.

При повторной предварительной компиляции узла производится компиляция только новых или измененных файлов (или файлов с зависимостями от новых или измененных файлов). Учитывая подобную оптимизацию работы компилятора, следует производить компиляцию узла при внесении даже малейшего изменения.

Предварительная компиляция для развертывания

Другое применение предварительной компиляции узла — создание исполняемой версии узла, которую можно развернуть на рабочем сервере. При предварительной компиляции для развертывания создаются выходные файлы в форме макета. Макет содержит сборки, конфигурационные сведения, информацию о папках узла и статических файлах (например, HTML-файлы и изображения).

После предварительной компиляции узла макет можно развернуть на рабочем сервере при помощи различных средств, например, команды Windows XCopy, протокола FTP, установки в Windows и т. д. После того как макет развернут, он может функционировать как узел, а ASP.NET будет выполнять все запросы страниц, используя сборки из макета.

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

Предварительную компиляцию для развертывания можно осуществлять с двумя целями: только для развертывания и для развертывания и обновления.

Предварительная компиляция узла только для развертывания

При предварительной компиляции только для развертывания компилятор создает сборки практически из всех исходных файлов ASP.NET, которые обычно компилируются во время выполнения. Сюда входят программный код на страницах, файлы классов VB и CS, другие файлы кода и файлы ресурсов. Компилятор удаляет все исходные данные и разметку из выходных данных. В получившемся макете для каждого файла ASPX создаются скомпилированные файлы (с расширением COMPILED), которые содержат указатели на соответствующие сборки для каждой страницы.

Чтобы изменить веб-узел, содержащий макет страниц, необходимо изменить исходные файлы, заново скомпилировать узел и развернуть макет. Единственное исключение относится к конфигурации узла. Файл Web.config на рабочем сервере можно изменять, не проводя заново компиляцию узла.

Такой вариант обеспечивает наивысшую степень защиты веб-страниц ASP.NET и наилучшую производительность при запуске.

Предварительная компиляция для развертывания и обновления

При предварительной компиляции для развертывания и обновления компилятор создает сборки из всего исходного кода (за исключением кода страницы для страниц с одним файлом) и других файлов, из которых обычно создаются сборки, таких как файлы ресурсов. Компилятор конвертирует файлы ASPX в отдельные файлы, которые используют модель скомпилированного кода программной части, и копирует их в макет.

Такой вариант ограничивает изменения, которые можно делать в веб-страницах ASP.NET на веб-узле после их компиляции. Например, можно изменить расположение элементов управления, цвет, шрифт и другие параметры, определяющие внешний вид страницы. Также можно добавить элементы управления, не требующие использования обработчиков событий или другого кода.

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

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

Предварительно скомпилированный обновляемый узел не разрешает ссылки на одинаковый класс CodeFile нескольких страниц.

Матрица решений предварительной компиляции

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

Цель

Модель компиляции

Быстрая разработка приложений без обращения внимания на компиляцию кода.

Используйте компиляцию по умолчанию (без предварительной компиляции).

Уменьшение времени отклика при первом запросе страницы веб-узла.

Используйте предварительную компиляцию на месте или один из вариантов предварительной компиляции для развертывания.

Отделение исходного кода от кода пользовательского интерфейса.

Используйте предварительную компиляцию с обновляемым пользовательским интерфейсом.

Изменение кода пользовательского интерфейса без изменения исходного кода.

Используйте предварительную компиляцию с обновляемым пользовательским интерфейсом.

Удаление всего исходного кода и кода пользовательского интерфейса с рабочего сервера.

Используйте предварительную компиляцию с необновляемым пользовательским интерфейсом.

Обновление приложения путем замены отдельных сборок.

Используйте предварительную компиляцию с фиксированными именами.

Улучшение защиты приложения при помощи сборок со строгими именами.

Используйте предварительную компиляцию с подписанными сборками.

Выполнение предварительной компиляции

Предварительную компиляцию веб-узла можно произвести, вызвав средство Aspnet_compiler.exe с помощью командной строки. Дополнительные сведения см. в разделах Практическое руководство. Предварительная компиляция веб-узлов ASP.NET для развертывания и Программа компиляции для ASP.NET (Aspnet_compiler.exe). Visual Studio также содержит команды для предварительной компиляции веб-узла из интегрированной среды разработки (IDE).

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

При предварительной компиляции веб-узла производится компиляция только узла, без дочерних узлов. Если веб-узел содержит вложенную папку, помеченную как приложение в службах IIS, то дочернее приложение не будет компилироваться при предварительной компиляции родительской папки.

При предварительной компиляции веб-узла имеется одно ограничение кодирования, применяемое к узлам, которые должны быть скомпилированы с защитой исходного кода. Базовый класс страниц (класс с выделенным кодом) может ссылаться на связанный класс страниц (файл ASPX) и на членов классов страниц, используя полное указание имени класса. Однако подобные ссылки не будут работать при предварительной компиляции узла с защитой исходного кода. Ссылки не работают, так как базовый класс страницы из файла фонового кода не расположен в той же сборке, что и класс страницы, производный от страницы ASPX. Дополнительные сведения о предварительной компиляции с защитой исходного кода см. в разделе Практическое руководство. Подписывание сборок для предкомпилированных веб-узлов.

Компиляция по умолчанию

Приложения ASP.NET не обязательно компилировать вручную. По умолчанию ASP.NET компилирует веб-приложения при первом запросе страницы приложения в веб-обозревателе. Если файл приложения был изменен, то при следующем запросе страницы среда выполнения ASP.NET определит зависимости измененного файла. Заново компилироваться будут только файлы, на которые повлияло изменение.

Преимущества

Компиляция по умолчанию имеет следующие преимущества:

  • Простота использования. Компилятор ASP.NET делает всю работу за вас.

  • Лучшая модель компиляции для применения в процессе разработки, когда лишние шаги, требуемые для предварительной компиляции веб-узла, приводят лишь к замедлению.

Недостатки

Компиляция по умолчанию имеет следующие недостатки:

  • Может привести к значительным задержкам при первом запросе веб-узла.

  • Требует хранения файлов исходного кода на рабочем сервере.

  • Делает доступным исходный код и код пользовательского интерфейса для всех, кто имеет доступ к файловой системе каталога веб-узла на рабочем сервере.

Варианты применения компиляции по умолчанию

Используйте компиляцию по умолчанию в следующих случаях:

  • При разработке и проверке веб-узла.

  • Для веб-узлов, которые содержат в основном статическую информацию.

  • Для редко изменяемых веб-узлов.

  • Если вас не беспокоит хранение файлов исходного кода на рабочем сервере.

Компиляция на месте

Можно производить предварительную компиляцию узла, который уже размещен на рабочем сервере. Это называется компиляцией на месте. Если файл приложения был изменен, то его можно заново скомпилировать при помощи компилятора ASP.NET. Файлы, на которые повлияло данное изменение, будут заново скомпилированы при следующем запросе страницы из приложения.

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

Преимущества

Компиляция на месте имеет следующие преимущества:

  • Уменьшение времени отклика при первом запросе веб-узла.

  • Не требуется отдельных шагов для развертывания — приложение компилируется точно так, как будто страница была запрошена с узла.

Недостатки

Компиляция на месте имеет следующие недостатки:

  • Весь исходный код приложения должен храниться на рабочем сервере.

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

Варианты применения компиляции на месте

Используйте компиляцию на месте в следующих случаях:

  • Страницы веб-узла часто изменяются.

  • Если вас не беспокоит хранение файлов исходного кода на рабочем сервере.

  • Если требуется улучшить время отклика при первом запросе страницы.

Предварительная компиляция с обновляемым пользовательским интерфейсом

При помощи ключа -u в компиляторе ASP.NET можно компилировать исходный код (файлы CS, VB и файлы ресурсов) в библиотеки DLL. Разметку пользовательского интерфейса в файлах ASPX можно оставить доступной для обновления. После развертывания веб-узла на рабочем сервере изменения кода в файлах ASPX можно делать без повторной компиляции веб-узла в целом.

Дополнительные сведения об этом методе компиляции см. в разделе Практическое руководство. Предварительная компиляция веб-узлов ASP.NET для развертывания.

Преимущества

Предварительная компиляция веб-узла с обновляемым пользовательским интерфейсом имеет следующие преимущества:

  • Уменьшение времени отклика при первом запросе веб-узла.

  • Разработчики пользовательского интерфейса могут изменять отображение и поведение веб-узла без требования повторной компиляции всего веб-узла.

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

Недостатки

Предварительная компиляция веб-узла с обновляемым пользовательским интерфейсом имеет следующие недостатки:

  • Требует отдельного шага компиляции перед развертыванием на рабочем сервере.

  • Интеллектуальная собственность пользовательского интерфейса приложения (файлы ASPX) доступна всем, кто имеет доступ к каталогу веб-узла.

  • На один и тот же класс CodeFile, который является соответствующим файлом кода страницы, использующей модель с выделенным кодом, не могут ссылаться несколько страниц.

Варианты предварительной компиляции с обновляемым пользовательским интерфейсом

Используйте предварительную компиляцию приложений с обновляемым пользовательским интерфейсом в следующих случаях:

  • Если разработчики пользовательского интерфейса работают отдельно от разработчиков исходного кода.

  • Исходный программный код содержит интеллектуальную собственность, которую необходимо защитить от несанкционированного просмотра.

  • Если вы не хотите хранить исходный программный код на рабочем сервере.

Предварительная компиляция с необновляемым пользовательским интерфейсом

Компилятор ASP.NET может скомпилировать весь исходный код приложения в библиотеки DLL, которые разворачиваются в папке Bin приложения. Сюда относятся и файлы пользовательского интерфейса, например файлы ASPX и ASCX.

Дополнительные сведения об этом методе компиляции см. в разделе Практическое руководство. Предварительная компиляция веб-узлов ASP.NET для развертывания.

Преимущества

Предварительная компиляция веб-узла с необновляемым пользовательским интерфейсом имеет следующие преимущества:

  • Уменьшение времени отклика при первом запросе веб-узла.

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

Недостатки

Предварительная компиляция веб-узла с необновляемым пользовательским интерфейсом имеет следующие недостатки:

  • Требует отдельного шага компиляции перед развертыванием на рабочем сервере.

  • Даже небольшие изменения пользовательского интерфейса приложения требуют повторной компиляции всего веб-узла.

Варианты предварительной компиляции с необновляемым пользовательским интерфейсом

Используйте предварительную компиляцию веб-узла с необновляемым пользовательским интерфейсом в следующих случаях:

  • Код пользовательского интерфейса содержит интеллектуальную собственность, которую необходимо защитить от несанкционированного просмотра.

  • Пользовательский интерфейс меняется не часто.

  • Вы хотите хранить только скомпилированные библиотеки DLL на рабочем сервере.

Предварительная компиляция в сборки с фиксированными именами

Компилятор ASP.NET использует случайные имена сборок, которые создаются во время компиляции. Имя сборки изменяется каждый раз, когда приложение компилируется заново.

Так как имена сборок меняются, то необходимо заново разворачивать приложение целиком для обслуживания одной сборки. Однако при помощи ключа -fixednames в компиляторе ASP.NET можно создавать отдельную сборку для каждой страницы приложения. Имя сборки не будет изменяться при последующих компиляциях. Таким образом, можно создавать наборы исправлений для приложения, которые будут заменять только измененные сборки.

Так как ключ -fixednames создает отдельные сборки для каждой страницы, то следует ограничить количество страниц в приложении.

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

Преимущества

Предварительная компиляция в сборки с фиксированными именами имеет следующие преимущества:

  • Имена отдельных сборок не меняются при последовательных компиляциях. Это позволяет заменять отдельные сборки без необходимости повторного развертывания приложения целиком.

  • Небольшие изменения в приложении могут быть более целенаправленными.

Недостатки

Предварительная компиляция в сборки с фиксированными именами имеет следующие недостатки:

  • Для каждой страницы приложения создается отдельная сборка. В результате создается множество сборок для узлов, содержащих множество страниц.

Варианты использования предварительной компиляции в сборки с фиксированными именами

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

  • Требуется исправлять веб-приложения без необходимости замены приложения целиком.

Предварительная компиляция в подписанные сборки

Компилятор ASP.NET можно использовать для создания сборок со строгими именами, которые могут быть развернуты в каталоге глобального кэша сборок (Global Assembly Cache – GAC) на сервере или в каталоге Bin приложения. Подписанная сборка усложняет пользователям-злоумышленникам замену сборок приложения вредоносным кодом.

Дополнительные сведения об этом методе компиляции см. в разделе Практическое руководство. Подписывание сборок для предкомпилированных веб-узлов.

Преимущества

Предварительная компиляция в подписанные сборки имеет следующие преимущества:

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

Недостатки

Предварительная компиляция в подписанные сборки имеет следующие недостатки:

  • Управление ключами в общих средах разработки значительно усложняется.

  • Сборки должны иметь атрибут AllowPartiallyTrustedCallersAttribute, чтобы их можно было вызвать средой выполнения ASP.NET.

Варианты использования предварительной компиляции в подписанные сборки

Используйте предварительную компиляцию в подписанные сборки в следующих случаях:

  • Пользователи имеют доступ к каталогу приложения или глобальному кэшу сборок и могут заменять сборки приложения.

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

Запись выходных файлов предварительной компиляции

После завершения процесса предварительной компиляции результирующие выходные файлы записываются в указанную разработчиком папку. Выходные файлы можно записать в любую папку, доступную в файловой системе, при помощи протокола передачи данных (FTP) или протокола HTTP. Необходимо наличие разрешений, достаточных для записи в целевую папку.

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

В процессе публикации разворачиваются только файлы из папок и вложенных папок веб-узла. Файл Machine.config не развертывается. Таким образом, конфигурация целевого веб-сервера может быть отличной от имеющейся на компьютере, что может повлиять на поведение приложения.

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

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

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

В состав выходных файлов процесса предварительной компиляции входят скомпилированные сборки всего кода и всех страниц. Если выбран параметр, позволяющий обновлять предварительно скомпилированный узел, то все классы с выделенным кодом файлов ASPX, ASMX и ASHX будут скомпилированы в сборки. Однако сами файлы ASPX ASMX и ASHX копируются в исходном виде в целевую папку, и их макет можно изменять после развертывания узла. Для предварительно скомпилированных обновляемых узлов код страниц с одним файлом не компилируется в сборку. Вместо этого он развертывается в виде исходного кода.

Статические файлы не компилируются. Вместо этого они копируются в выходную папку в исходном виде. К статическим файлам относятся изображения, файлы HTM и HTML, текстовые файлы и т. п. Дополнительные сведения см. в нижеследующем разделе Работа с файлами во время компиляции для развертывания.

Если в ходе предварительной компиляции происходит ошибка, то сообщение о ней появляется в окнах Вывод и Список ошибок. Возникновение ошибок в ходе предварительной компиляции ведет к отмене компиляции и публикации веб-узла.

Работа с файлами во время предварительной компиляции ASP.NET

При предварительной компиляции узла для развертывания ASP.NET создает макет, который является структурой, содержащей выходные файлы компилятора. В данном разделе описывается управление файлами во время предварительной компиляции, а также описывается структура и содержимое макета.

Предварительно скомпилировать можно исходный код (все файлы, образующие сборки, которые включают программный код и ресурсы) и разметку (файлы ASPX), или только исходный код.

Скомпилированные файлы

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

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

После предварительной компиляции только для развертывания или для развертывания и обновления списки управления доступом файлов в целевых файлах и подпапках не сохраняются. Например, если предварительно скомпилировать узел, развернуть его в целевом месте, изменить список управления доступом файла, а после этого повторно произвести предварительную компиляцию и развертывание, то изменения в списке управления доступом будут потеряны.

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

Типы файлов

Действие при предварительной компиляции

Местоположение выходных файлов

.ASPX, ASCX, MASTER

Создаются сборки и файл COMPILED, указывающие сборку. Исходный файл остается на месте в качестве местозаполнителя при выполнении запроса.

Сборки и файлы COMPILED записываются в папку Bin. Страницы (файлы ASPX с отброшенным содержимым) остаются в исходном местоположении.

.ASMX, ASHX

Создаются сборки. Исходный файл остается на месте в качестве местозаполнителя при выполнении запроса.

Папка Bin

Файлы в папке App_Code

Создается одна или более сборок (в зависимости от параметров файла Web.config).

Bb398860.alert_note(ru-ru,VS.90).gifПримечание.
Статическое содержимое папки App_Code не копируется в целевую папку.

Папка Bin

.Файлы CS и VB, не из папки App_Code

Компилируются вместе со страницей или ресурсами, от которых они зависят.

Папка Bin

Файлы DLL в папке Bin.

Файлы копируются в исходном виде.

Папка Bin

Файлы ресурсов (RESX)

Для файлов RESX, найденных в папке App_LocalResources или App_GlobalResources, создается сборка (или сборки) и структура данных о языке и региональных параметрах.

Папка Bin

Файлы в папке App_Themes и вложенных папках

Создаются сборки в целевом месте и файлы COMPILED, указывающие сборки.

Bin

Статические файлы (файлы HTM, HTML, JS, изображения и т. д.)

Файлы копируются в исходном виде.

Такая же структура, что и в исходном виде.

Файлы описания обозревателя

Файлы копируются в исходном виде.

Bb398860.alert_note(ru-ru,VS.90).gifПримечание.
Сведения для обозревателя наследуются из файлов конфигурации уровня компьютера и могут, таким образом, вести себя по-разному на различных целевых серверах.

Папка App_Browsers

Зависимые проекты

Создаются выходные файлы зависимого проекта в сборку.

Папка Bin

Файлы Web.config.

Файлы копируются в исходном виде.

Такая же структура, что и в исходном виде.

Файлы Global.asax

Создается сборка.

Папка Bin

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

Типы файлов

Действие при предварительной компиляции

Местоположение выходных файлов

.ASPX, ASCX, MASTER

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

Сборки и файлы COMPILED записываются в папку Bin.

.ASMX, ASHX

Файлы копируются в исходном виде без компиляции.

Такая же структура, что и в исходном виде.

Файлы в папке App_Code

Создается одна или более сборок (в зависимости от параметров файла Web.config).

Bb398860.alert_note(ru-ru,VS.90).gifПримечание.
Статическое содержимое папки App_Code не копируется в целевую папку.

Папка Bin

.Файлы CS и VB не из папки App_Code

Компилируются вместе со страницей или ресурсами, от которых они зависят.

Папка Bin

Файлы DLL в папке Bin.

Файлы копируются в исходном виде.

Папка Bin

Файлы ресурсов (RESX)

Для файлов RESX из папок App_GlobalResources создается сборка (или сборки) и структура данных о языке и региональных параметрах.

Файлы RESX из папок App_LocalResources копируются в исходном виде в папку App_LocalResources в выходном каталоге.

Сборки сохраняются в папке Bin.

Файлы в папке App_Themes и вложенных папках

Файлы копируются в исходном виде.

Такая же структура, что и в исходном виде.

Статические файлы (файлы HTM, HTML, JS, изображения и т. д.)

Файлы копируются в исходном виде.

Такая же структура, что и в исходном виде.

Файлы описания обозревателя

Файлы копируются в исходном виде.

Bb398860.alert_note(ru-ru,VS.90).gifПримечание.
Сведения для обозревателя наследуются из файлов конфигурации уровня компьютера и могут, таким образом, вести себя по-разному на различных целевых серверах.

Папка App_Browsers

Зависимые проекты

Создаются выходные файлы зависимого проекта в сборку.

Папка Bin

Файлы Web.config.

Файлы копируются в исходном виде.

Такая же структура, что и в исходном виде.

Файлы Global.asax

Создается сборка.

Папка Bin

Скомпилированные файлы

Для исполняемых файлов веб-приложения ASP.NET компилятор добавляет расширение файла COMPILED к именам сборок и файлов. Имя сборки генерируется компилятором. Файл COMPILED не содержит исполняемого кода. Вместо этого он содержит только информацию, которую ASP.NET необходимо иметь для поиска соответствующей сборки.

После развертывания предварительно скомпилированного приложения для обработки запросов ASP.NET использует сборки из папки Bin. К выходным файлам предварительной компиляции в качестве местозаполнителей для страниц относятся файлы ASPX и ASMX. Файл-местозаполнитель не содержит кода. Они существуют только для того, чтобы вызывать ASP.NET для отдельных запросов страниц. Файлы-местозаполнители также предоставляют возможность установки разрешений для ограничения доступа к страницам.

Обновление предварительно скомпилированных веб-узлов

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

Тип файла

Разрешенные изменения (только для развертывания)

Разрешенные изменения (для развертывания и обновления)

Статические файлы (файлы HTM, HTML, JS, изображения и т. д.)

Статические файлы можно изменять, удалять и добавлять. Если веб-страница ASP.NET ссылается на страницы или элементы страниц, которые были изменены или удалены, то могут возникнуть ошибки.

Статические файлы можно изменять, удалять и добавлять. Если веб-страница ASP.NET ссылается на страницы или элементы страниц, которые были изменены или удалены, то могут возникнуть ошибки.

.Файл ASPX

Существующие страницы не разрешено изменять. Нельзя добавлять новые файлы ASPX.

Можно изменять макет файлов ASPX и добавлять новые элементы, которые не требуют кода, например, элементы HTML и серверные элементы управления ASP.NET, не содержащие обработчиков событий. Также можно добавлять файлы ASPX, которые будут скомпилированы при первом запросе.

.Файлы обложки

Изменения в файлах и новые файлы обложки не обрабатываются.

Изменения файлов и создание новых файлов SKIN разрешено.

Файлы Web.config

Разрешены изменения, влияющие на компиляцию файлов ASPX. Параметры компиляции для отладки или пакетной обработки не обрабатываются.

Не разрешены изменения свойств профиля и элементов поставщика.

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

Определения обозревателя

Изменения файлов и создание новых файлов разрешено.

Изменения файлов и создание новых файлов разрешено.

Сборки, скомпилированные из файлов ресурсов (RESX)

Для глобальных и локальных ресурсов можно добавлять новые файлы сборок ресурсов.

Для глобальных и локальных ресурсов можно добавлять новые файлы сборок ресурсов.

Примеры кода

Практическое руководство. Предварительная компиляция веб-узлов ASP.NET для развертывания

Практическое руководство. Подписывание сборок для предкомпилированных веб-узлов

Практическое руководство. Создание сборок с поддержкой версий для предварительно скомпилированных веб-узлов

Практическое руководство. Создание фиксированных имен с помощью средства компиляции ASP.NET

Практическое руководство. Настройка опубликованных веб-узлов

К началу

См. также

Ссылки

Программа компиляции для ASP.NET (Aspnet_compiler.exe)

К началу