ASP.NET - Что делать, если сайт не компилируется в Visual Studio
Последнее время мне очень часто приходилось сталкиваться с весьма неприятной ситуацией. При открытии какого-либо сайта через Visual Studio и нажатии Ctrl+F5 я получал огромное количество ошибок компиляции. При этом этот же сайт, выложенный на web-сервер, прекрасно работал. Ситуация становилась ещё хуже, когда требовалось выполнить отладку.
Обычно эта проблема появлялась на достаточно старых сайтах, созданных в кустарных условиях с обильным применением языка программирования JScript и SSI (Server Side Includes), однако, как оказалось, она также появляется в достаточно широко используемой NET Forge CMS.
Суть проблемы кроется в том, что по умолчанию при нажатии Ctrl+F5 (или просто F5 в случае отладки) Visual Studio пытается полностью скомпилировать весь сайт вместе с теми файлами, которые на web-сервере обычно компилируются только при первом обращении к ним.
В случае с NET Forge CMS ошибки появляются из-за того, что некоторые файлы (страницы, пользовательские элементы управления) предназначены не для компиляции, а для копирования в другую директорию при установке того или иного модуля. Относительно той директории, в которой они находятся изначально, в них используются виртуальные пути к несуществующим файлам, а при копировании эти пути становятся правильными.
Решить проблему, как оказалось, достаточно просто.
- Открываем сайт в Visual Studio.
- В окне Solution Explorer выбираем нужный сайт.
- В меню Visual Studio выбираем пункт View -> Property Pages (Этот же пункт есть в контекстном меню выбранного сайта)
- В появившемся окне выбираем пункт Build и в разделе Start action выбираем вариант No build.
- Проблема решена.
Кроме того, отключение компиляции при запуске в Visual Studio также позволит:
- ускорить запуск сайта, в случае большого количества файлов на сайте это может быть весьма существенно;
- выполнять отладку кода, который выполняется на этапе компиляции, например, код провайдеров компиляции (Build Providers) или построителей элементов управления (Control Builders).
Комментариев нет :