Игорь Чакрыгин Игорь Чакрыгин

У любой задачи существует по крайней мере одно очевидное и невероятно простое для понимания неправильное решение

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 ошибки появляются из-за того, что некоторые файлы (страницы, пользовательские элементы управления) предназначены не для компиляции, а для копирования в другую директорию при установке того или иного модуля. Относительно той директории, в которой они находятся изначально, в них используются виртуальные пути к несуществующим файлам, а при копировании эти пути становятся правильными.

Решить проблему, как оказалось, достаточно просто.

  1. Открываем сайт в Visual Studio.
  2. В окне Solution Explorer выбираем нужный сайт.
  3. В меню Visual Studio выбираем пункт View -> Property Pages (Этот же пункт есть в контекстном меню выбранного сайта)
  4. В появившемся окне выбираем пункт Build и в разделе Start action выбираем вариант No build.
  5. Проблема решена.

Кроме того, отключение компиляции при запуске в Visual Studio также позволит:

  • ускорить запуск сайта, в случае большого количества файлов на сайте это может быть весьма существенно;
  • выполнять отладку кода, который выполняется на этапе компиляции, например, код провайдеров компиляции (Build Providers) или построителей элементов управления (Control Builders).

Комментариев нет :

© Игорь Чакрыгин. Все права защищены при помощи чёрной магии. Технологии Blogger.