Ответ 1
Важно понимать, что для вашего проекта есть две, полностью отдельные компиляции. Первое - это то, что вы делаете в 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.