Сцепление в программировании является техникой, использующей так называемые рычаги для создания цепочки процедур как обработчик событий.
Важно понимать, что для вашего проекта есть две, совершенно разные компиляции. Первый - это то, что вы делаете в Visual Studio. Второй - тот, который ASP.NET выполняет непосредственно перед обслуживанием страницы. Если DEBUG внутри вашего представления выполняется на втором шаге. Описанная вами сборка релиза - это первый шаг. Следовательно, параметр отладки / выпуска вашего проекта не имеет ничего общего с параметром отладки в Web.config / компиляторе ASP.NET.
Более того, для вашей сборки Visual Studio было бы совершенно неуместно изменять параметр отладки в файл Web.config. Это две отдельные компиляции, и одна не должна влиять на другую.
С другой стороны, у вас, вероятно, есть вполне разумная потребность в том, чтобы ваше представление вел себя иначе, когда вы отлаживаете внутри Visual Studio, и ты можешь это сделать. Вам просто нужно переместить оператор «if» за пределы представления во что-то, что скомпилировано Visual Studio, а не ASP.NET. Мы делаем это с помощью HTML-помощника. Например:
/// <summary>
/// Returns the HTML to include the appropriate JavaScript files for
/// the Site.Master.aspx page, depending upon whether the assembly
/// was compiled in debug or release mode.
/// </summary>
/// <returns>HTML script tags as a multi-line string.</returns>
public static string SiteMasterScripts(this UrlHelper helper)
{
var result = new StringBuilder();
#if DEBUG
result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.debug.js"));
#else
result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.js"));
#endif
// etc. ...
Сюда входят файлы JS отладки при работе в конфигурации отладки в Visual Studio, но в противном случае JS свернут.
Проверьте настройки вашего проекта, чтобы убедиться, что DEBUG не определен.