Лучший способ сократить время предварительной компиляции для небольших изменений на больших веб-сайтах - использовать инструмент компиляции ASP.Net (aspnet_compiler.exe) с компиляцией на месте.
Наш скрипт сборки запускает инструмент с помощью следующей команды:
aspnet_compiler.exe -v / -p C: \ путь \ к \ MyWebSite
Эта команда указывает физический путь к веб-сайту, но не устанавливает параметр targetDir, в результате чего приложение компилируется на месте.
Преимущество компиляции на месте заключается в том, что aspnet_compiler по умолчанию компилирует только те файлы, которые изменились с момента последней компиляции веб-сайта (вы можете принудительно перекомпилировать все с помощью опции -c). Например, когда я впервые запускаю вышеуказанную команду для веб-сайта, она занимает около 10 минут. Если я затем изменю один файл и запустлю его снова, это займет всего около 30 секунд.
Вам может быть интересно узнать, как инструмент компиляции «знает», какие файлы были изменены. Компиляция на месте не приводит к изменению компилируемого приложения, т. Е. Вы не получите файлы, такие как App_Web_xdqqvn5q.dll и default.aspx.cdcab7d2.com, собранные в папке bin вашего веб-приложения. Выходные данные фактически создаются в папке «Temporary ASP.NET Files». Когда вы указываете физический путь (а не метабазу IIS), в вашем профиле используется папка, например, C: \ Users \ ваше.имя \ AppData \ Local \ Temp \ Временные файлы ASP.NET. Исходный код вашего веб-приложения имеет перекрестные ссылки с данными, хранящимися во временных файлах ASP.NET, чтобы выяснить, что изменилось.