Как запустить код в зависимости от режима выпуска или отладки?

У меня есть переменная (т.е. bool releaseMode = false;). Я хочу, чтобы значение переменной было установлено в зависимости от того, находимся ли мы в режиме выпуска (releaseMode = true;), иначе в режиме отладки (releaseMode = false;)


person shahab jani    schedule 04.06.2021    source источник


Ответы (1)


Из вашего вопроса вы можете использовать это:

/// <summary>
/// Indicate if the executable has been generated in debug mode.
/// </summary>
static public bool IsDebugExecutable
{
  get
  {
    bool isDebug = false;
    CheckDebugExecutable(ref isDebug);
    return isDebug;
  }
}

[Conditional("DEBUG")]
static private void CheckDebugExecutable(ref bool isDebug)
  => isDebug = true;

Конечно, вы можете поменять имя на:

IsReleaseExecutable

return !isDebug;

Этот подход подразумевает, что весь код компилируется. Таким образом, любой код может быть выполнен в зависимости от этого флага, а также любого другого параметра поведения, касающегося пользователя или программы, такого как, например, активация или деактивация механизма отладки и трассировки. Например:

if ( IsDebugExecutable || UserWantDebug )  DoThat();

Другой вариант директивы препроцессора:

Директивы if / then C # для отладки и выпуска

#if DEBUG против условного (DEBUG)

person Olivier Rogier    schedule 04.06.2021
comment
как насчет этого кода: #if DEBUG releaseMode = false; #else releaseMode = true; #endif - person shahab jani; 04.06.2021
comment
Как пожелаете. Выберите метод, который лучше всего подходит для вас, который наиболее подходит для вас и для контекста. Выберите то, что вы считаете наиболее ясным, чистым, эффективным и удобным в обслуживании. Лично я, прочитав и протестировав несколько вещей, выбрал предложенный код, который показался мне наиболее аккуратным. - person Olivier Rogier; 04.06.2021