Сейчас активно работаю над системным слоем кода нашей системы создания и управления сайтом (Gendix.CMS), и в связи с этим пришлось разобраться с многими аспектами тех процессов, которые происходят от момента написания ASPX/ASCX- разметки и CS-кода до момента их физического выполнения в виде некоторого скомпилированного кода на сервере.
Генерация полного исходного кода
Начнём с простой, и, в принципе, известной особенности ASP.NET 2.0: частичной компиляции страниц. Как мы знаем, частичные (partial) классы — это синтаксический сахар для разнесения исходного кода класса в несколько разных файлов. Это особенно удобно, когда одна часть кода класса генерируется автоматически некоторой утилитой, а другая — пишется вручную программистом. Так как модифицировать автогенерённый код — очень плохая практика (ведь последующая перегенерация уничтожит все такие изменения), в таких случаях утилита генерирует классы как частичные, и программист может спокойно добавить нужный функционал «рядом», в соседнем файле, не затрагиваемом перегенерацией.
Именно так и поступает среда ASP.NET, когда сталкивается с парой ASPX (или ASCX,ASHX,ASAX) + CS.
Пусть есть пара описаний — ASPX-страница с серверным кодом и элементом управления и её файл отделённого кода:
Прочитать статью полностью на Хабрахабре.