Как я могу проверить, нахожусь ли я в отладке или выпуске сборки в веб-приложении? - PullRequest
5 голосов
/ 03 ноября 2008

В любом (не веб) проекте .net компилятор автоматически объявляет константы DEBUG и TRACE, поэтому я могу использовать условную компиляцию, например, для обработки исключений по-разному в режиме отладки и выпуска.

Например:

#if DEBUG
    /* re-throw the exception... */
#else
    /* write something in the event log... */
#endif

Как мне получить такое же поведение в проекте ASP.net? Похоже, что раздел system.web / compilation в web.config может быть тем, что мне нужно, но как мне проверить это программно? Или мне лучше объявить константу DEBUG самостоятельно и закомментировать ее в сборках релиза?

РЕДАКТИРОВАТЬ: я на VS 2008

Ответы [ 3 ]

7 голосов
/ 03 ноября 2008

Чтобы добавить ответ Эндрюса поверх него, вы можете также обернуть его в метод

public bool IsDebugMode
{
  get
  {
#if DEBUG 
    return true;
#else
    return false;
#endif
  }
}
6 голосов
/ 03 ноября 2008

Посмотрите на ConfigurationManager.GetSection () - это должно помочь вам пройти большую часть пути ... однако, я думаю, вам лучше просто переключаться между режимами отладки и выпуска и позволить компилятору определить: выполнить вложенные операторы "#if DEBUG".

#if DEBUG
/* re-throw the exception... */
#else
/* write something in the event log... */
#endif

вышеописанное будет работать просто отлично, просто убедитесь, что у вас есть как минимум две конфигурации сборки (щелкните правой кнопкой мыши проект, над которым вы работаете, и перейдите в «Свойства», там есть раздел по сборкам) - убедитесь, что один из этих сборок проверено «определение DEBUG», а у других нет.

5 голосов
/ 03 ноября 2008

Вот что я закончил:

protected bool IsDebugMode
{
    get
    {
        System.Web.Configuration.CompilationSection tSection;
        tSection = ConfigurationManager.GetSection("system.web/compilation") as System.Web.Configuration.CompilationSection;
        if (null != tSection)
        {
            return tSection.Debug;
        }
        /* Default to release behavior */
        return false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...