Оптимизация производительности сборки проекта веб-сайта ASP.NET? - PullRequest
8 голосов
/ 14 сентября 2009

В настоящее время я работаю с ASP.NET CMS, в которой хранится около 500 файлов кода в каталоге App_Code, а также с сотнями веб-форм с выделенным кодом в различных папках сайта. Это проект веб-сайта (не проект веб-приложения), и я не хочу его менять, так как это проект с участием нескольких разработчиков, плюс способ доставки CMS.

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

Есть ли способы избежать перестройки всех файлов? Должен ли я поднять вопрос о разделении нашего кода и кода CMS на отдельные проекты веб-приложений (вместо проекта веб-сайта)? Есть ли другие способы улучшить производительность сборки?

Ответы [ 5 ]

13 голосов
/ 15 сентября 2009

Если самое простое решение в отношении исправлений заключается в том, чтобы сохранить структуру .cs как можно более похожей, то я бы согласился с рекомендацией Андреаса переместить App_Code как минимум в 1 другой проект.

Скотт Гатри опубликовал несколько советов по ускорению компиляции в VS 2005, вы не указали, в какой версии вы работали, но применяются те же советы по скорости. Второй раздел его поста посвящен проектам веб-сайтов.

Еще один совет: если вы работаете со страницами, а не кодируете на самом деле в каталоге App_Code, есть опция сборки, которая может быть полезна . Перейдите на страницу Свойства проекта > Сборка > Изменить Перед запуском стартовой страницы с веб-сайта сборки на Страница сборки , это создаст только запуск страница, когда вы запускаете отладчик. Я не уверен, что этот сценарий случается часто, но если большая часть вашей работы происходит на страницах, а не в App_Code, это сэкономит вам много времени на компиляцию.

App_Code должен быть собран вместе, вам следует избегать размещения ваших кодов и т. Д. Все, что может быть в другом месте, должно быть. Замечание: время компиляции, по крайней мере при отладке, обычно в 30-50 раз быстрее в веб-приложении. При этом вы должны перекомпилировать все приложение при каждом изменении кода, чтобы были недостатки ... но с изменениями в пространстве имен и т. Д. Я понимаю, что вам понадобятся исправления.

Кроме того, имейте в виду, что когда вы разделяете код на другие проекты, помимо упрощения универсального подхода с точки зрения компиляции, Visual Studio не нужно будет компилировать эти другие проекты зависимостей, если они не изменились. В настоящий момент все является честной игрой, потому что все, что может измениться в вашем проекте, может повлиять на что-то еще там ... однако, если вы разделите его, Visual Studio будет компилировать ваши другие проекты только тогда, когда они изменятся или проект они ссылаются, перестраивается.

4 голосов
/ 23 сентября 2009

Вы должны попробовать новый флаг OptimizeCompilation, который мы недавно добавили.

<compilation optimizeCompilations="true">

Пожалуйста, посмотрите мой пост в блоге , чтобы узнать, о чем он и где его взять. Если вы не пользуетесь Win7 или не используете VS2010, вам нужно получить исправление.

3 голосов
/ 14 сентября 2009

Вы должны хотя бы попытаться преобразовать его в веб-приложение, если только для этого нет какой-либо политической причины. Это не так сложно, как кажется, самая большая проблема заключается в том, что всем вашим разработчикам может потребоваться перенастроить свои решения.

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

0 голосов
/ 28 сентября 2009

У нас возникла аналогичная проблема с нашим проектом, который построен таким образом, чтобы разрешить горячее добавление новых партнерских сайтов whitelabel.

Самый простой способ, который мы нашли, чтобы ускорить время сборки, - это уменьшить узкое место ввода-вывода, с которым Visual Studio зависает. Получите приличный SSD (мы используем накопители OCZ 60 ГБ Summit), вы должны значительно улучшить время сборки.

Другой способ сэкономить время - сократить общее количество каталогов в вашем проекте. Для каждого нового каталога, с которым сталкивается Visual Studio, запускается новый экземпляр компилятора. Наличие как можно большего количества файлов в одном каталоге снижает эту стоимость. (Чтобы получить структуру папок, обеспечивающую поддержку проекта, используйте виртуальные папки)

0 голосов
/ 15 сентября 2009

Я думаю, что вашей самой большой проблемой было бы огромное количество файлов. Я бы разделил веб-приложение на несколько (как минимум 2) проектов: ваш веб-проект и бизнес-уровень (или что-то в этом роде).

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

Если вы решите пойти по этому пути, когда внесете изменения в один из файлов вашего другого проекта, вам нужно быть очень осторожным при развертывании изменений, поскольку вам придется развернуть всю DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...