Представление asp.mvc вводит #IF DEBUG в конфигурацию выпуска
У меня есть вид ASP MVC, где есть следующее заявление
#if DEBUG
//section 1
//do stuff
#else
//section 2
//do other stuff
#endif
Когда в Visual Studio я выбираю конфигурацию выпуска из выпадающего списка, чтобы выполнить сборку, код все еще проходит через раздел 1.
В свойствах конфигурации решения все подпроекты решения устанавливаются в конфигурацию выпуска.
Что я не получаю здесь?
3 ответа
Важно понимать, что для вашего проекта есть две совершенно отдельные компиляции. Первый - это тот, который вы делаете в Visual Studio. Второе - это то, что ASP.NET делает непосредственно перед обслуживанием страницы. If 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.
Задавать <compilation debug="false">
в вашем web.config
файл.
Проверьте настройки вашего проекта, чтобы убедиться, что DEBUG не определен.