Рассеянный в течение проекта программного обеспечения я продолжаю работать, много строк кода, которые были записаны для отладки и служебных целей. Прежде чем я скомпилирую свой код, я хочу способ выбрать, должны ли эти блоки кода быть включены в мою компиляцию (что-то, что не потребует навигации по комментирующему коду). Как я могу сделать это?
Я программирую в c# и использую Microsoft Visual Studio 2010.
Добавьте атрибут [Conditional ("DEBUG")]
в методы, которые вы хотите выполнять только в отладочной сборке. См. здесь для получения более подробной информации.
Я бы посоветовал заключить ваши блоки в #ifdef SOMETHING
и #endif
, а затем указать SOMETHING
в настройках вашего проекта когда вы хотите включить этот блок в свою компиляцию.
Вам нужны директивы препроцессора или операторы условной компиляции. Вы можете прочитать о них здесь .
Пример из этой ссылки:
#define TEST
using System;
public class MyClass
{
public static void Main()
{
#if (TEST)
Console.WriteLine("TEST is defined");
#else
Console.WriteLine("TEST is not defined");
#endif
}
}
Код компилируется, только если ТЕСТ определен в верхней части кода. Многие разработчики используют #define DEBUG, чтобы включить отладку кода и снова удалить его, просто изменив эту строку вверху.
Рассмотрите возможность использования класса Debug для условного протоколирования, утверждения и т. Д. Это дает много преимуществ. Вы можете выбрать регистрацию (или нет) во время выполнения. Они ограничивают вас (в основном) действиями, не влияющими на поведение, решая некоторые (действительные) проблемы @ STW. Они позволяют использовать сторонние инструменты ведения журнала.
Если они предназначены для отладки, то единственное приемлемое решение - заключить такой код в:
#ifdef DEBUG
#endif
Это гарантирует, что код будет включен при компиляции в режиме отладки, но исключен в режиме выпуска.
Возможно, вы захотите полностью переместить эти отладочные функции из классов - если ваши классы «меняют форму» между режимами отладки и выпуска, это может стать настоящей головной болью и может быть трудным для диагностики проблем. .
Вы можете подумать о создании отдельной сборки «Отладка», которая содержит все ваши помощники по отладке - затем просто убедитесь, что вы можете исключить ее из решения и успешно построить без нее.
Вы можете использовать директивы препроцессора w / #if