Запустите эквивалентную команду «Страница сборки» для проекта веб-сайта Visual Studio из командной строки - PullRequest
2 голосов
/ 24 августа 2011

Как описано в Совет / хитрость: оптимизация производительности сборки веб-проектов ASP.NET 2.0 с VS 2005 , команда «Страница сборки», доступная в проектах веб-сайтов Visual Studio, выполняет следующие действия:

решение скомпилирует все проекты библиотеки классов, как и раньше, затем скомпилирует каталог / app_code и файл Global.asax, а затем вместо повторной проверки всех страниц на веб-сайте будет толькопроверьте текущую страницу, над которой вы работаете, и любые пользовательские элементы управления, которые ссылаются на страницу .

Есть ли способ получить доступ к этой функции из msbuild и / или из командной строки?

Я настраиваю автоматическую сборку большого проекта веб-сайта Visual Studio (на основе Kentico CMS), который состоит из:

  • большого количества страниц, связанных с CMS, и пользовательских элементов управления, которыемы не изменяем
  • небольшое количество пользовательских элементов управления "веб-части", которые мы активно разрабатываем, все в рамках CMSWebParts / Custom directory внутри веб-сайта

Предварительная компиляция всего сайта с использованием aspnet_compiler занимает до 10 минут, что слишком медленно для фиксации сборки.В идеале я хотел бы представить шаг, который предварительно компилирует только наш пользовательский код.Обратите внимание, что мы на самом деле не разворачиваем предварительно скомпилированный вывод (не рекомендуется для сайтов Kentico), этот шаг предназначен только для проверки кода в файлах .ascx.

Ответы [ 2 ]

3 голосов
/ 25 августа 2011

Лучший способ сократить время предварительной компиляции для небольших изменений на больших веб-сайтах - использовать инструмент компиляции 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, чтобы выяснить, что изменилось.

0 голосов
/ 24 августа 2011

Я думаю, что это может помочь для того, что вам нужно сделать:

http://msdn.microsoft.com/en-us/library/dd293881.aspx

Из того, что я прочитал, вы можете запустить сборку из командной строки Visual Studio или из оконкомандная строка.

Обновление:

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

-c

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

Использование aspnet_compiler объясняется на этой странице:

http://msdn.microsoft.com/en-us/library/ms229863.aspx

...