Предварительная компиляция определенных каталогов в проекте веб-сайта ASP.NET
У меня есть проект веб-сайта ASP.NET, который имеет смесь обновляемых страниц и страниц, которые не меняются.
Могу ли я предварительно скомпилировать определенные каталоги, которые содержат страницы / элементы управления, которые не будут обновляться?
Если так, как я могу обозначить эти каталоги как таковые?
Изменить 2009.12.17
Мой проект структурирован так:
/ cms_pages ==> Обновляемые страницы.aspx, помеченные CompilationMode="never" и без кода файла.
/ app_pages ==>.aspx страницы с файлом кода.aspx.cs.
/ controls ==>.ascx контролирует с файлом кода.ascx.cs.
Я хотел бы "предварительно скомпилировать" app_pages и папки управления.
Можно ли это сделать?
3 ответа
Вы хотите скомпилировать свои страницы ASPX с их кодовыми файлами или просто скомпилировать некоторые файлы.cs в папке App_Code?
Если вы просто пытаетесь управлять версиями некоторых статических функций или глобальных объектов, вы можете скомпилировать DLL, чтобы сохранить ее в папке App_Code.
Не без головной боли. Как вы прекомпилируете страницы сейчас? Они должны быть в WAP, чтобы это работало... поэтому все, что вы не хотите предварительно скомпилировать, просто исключите из проекта.
[Редактировать]
Можно вручную вызвать компилятор asp.net. Но я не рекомендую это. Что вам действительно нужно сделать, так это разделить файлы вашего решения на разные проекты... поместите предварительно скомпилированные файлы в проект веб-приложения или просто в обычную библиотеку классов. Затем на своем веб-сайте добавьте ссылку на проект для этого WAP.
Не могли бы вы просто предварительно скомпилировать все элементы управления (и, возможно, что-нибудь еще) в сборку, тогда вы можете получить к ним доступ через myAssembly.myControl
Dim assembly As Reflection.Assembly = Reflection.Assembly.LoadFrom(Server.MapPath(Virtual path to assembly))
Dim myControlType As Type = assembly.GetType Dim myControl As UserControl = LoadControl (myControlType, Nothing) myPanel.Controls.Add (myControl)
Или же
Dim myControl As Control = LoadControl(virtual path to control)
myPanel.Controls.Add(myControl )
Надеюсь это поможет..