Как я могу ввести предложения и строки кода, которые будут выполняться только в режиме отладки? - PullRequest
3 голосов
/ 18 сентября 2009

У меня есть одно приложение, в котором мне нужно вносить изменения в код почти все время (изменение критографических процедур и т. Д.), Поэтому моя идея состоит в том, чтобы все мои параметры отладки и переменные активировались каждый раз, когда я вносил изменения. Я не хочу постоянно комментировать и раскомментировать код, поэтому мой вопрос касается простых строк кода, которые будут выполняться только в режиме отладки. ¿Как мне этого добиться?

Ответы [ 4 ]

9 голосов
/ 18 сентября 2009

Вы можете использовать условный код:

#if DEBUG
    //Your code goes here.
#endif

Или вы можете использовать атрибут [Conditional("DEBUG")], чтобы обнулить целую функцию в сборке выпуска.

Как в:

[Conditional("DEBUG")]
private void YourFunction()
{
}
4 голосов
/ 18 сентября 2009

Вот хороший справочник.

http://www.csharphelp.com/archives/archive36.html

Хороший пример из источника:

#if DEBUG
         Console.WriteLine("DEBUG is defined");
      #else
         Console.WriteLine("DEBUG is not defined");
      #endif
1 голос
/ 18 сентября 2009

Двумя основными решениями являются директивы препроцессора и атрибут Conditional . Соответствующая директива препроцессора работает следующим образом:

#if DEBUG
// Lines here are only compiled if DEBUG is defined, like in a Debug build.

#else

// Lines here are only compiled if DEBUG is not defined, like in a Release build.

#endif

Атрибут Условный применяется к методу:

[Conditional("DEBUG")]
public void DoDebugOnly()
{
    // Whatever
}

Тогда все вызовы для DoDebugOnly () компилируются, только когда определено DEBUG.

Оба метода работают и для любых других идентификаторов препроцессора. TRACE - это еще один пример, который интегрирован в Visual Studio, но любой определенный вами идентификатор препроцессора работает:

#define FOO

#if FOO
// Lines here are only compiled if FOO is defined.

#endif
0 голосов
/ 18 сентября 2009

В зависимости от того, что вы пытаетесь сделать, вы можете рассмотреть такую ​​структуру ведения журналов, как log4net или Блок приложения ведения журналов . Это позволит вам оставлять отладочные сообщения в вашем коде, но будет выводить их только тогда, когда внешний файл конфигурации скажет.

Если вы хотите добавить / удалить код, который фактически выполняет логику, перейдите к другим ответам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...