Подтвердить что ты не робот

Asp.mvc view вводит #IF DEBUG в конфигурации выпуска

У меня есть представление ASP MVC, где есть следующий оператор

#if DEBUG
  //section 1
  //do stuff
#else
  //section 2
  //do other stuff
#endif

Когда в visual studio я выбираю конфигурацию выпуска из раскрывающегося списка, чтобы выполнить сборку, код все еще проходит через раздел 1.

В свойствах конфигурации решения все подпроекты решения устанавливаются в конфигурацию релиза.

Что я не получу здесь?

4b9b3361

Ответ 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.

Ответ 2

Установите <compilation debug="false"> в свой web.config файл.

Ответ 3

Проверьте настройки проекта, чтобы гарантировать, что DEBUG не определен.