VB 2010 Express: полностью отлажен Debug.WriteLine в отладочной версии? - PullRequest
2 голосов
/ 31 августа 2011

Простой вопрос, который, кажется, не охватывается: Если я использую в своем коде много операторов Debug.WriteLine, будут ли они полностью отсутствовать в моей рабочей версии?

Iзначит: достаточно ли умен компилятор, чтобы не генерировать код для этих вызовов?Или я должен был бы окружить их #if DEBUG..#end директивами?

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

Члены класса отладки помечены с помощью ConditionalAttribute, поэтому сайты вызовов не будут компилироваться, если сборка выполняется в режиме выпуска

см. Верх этой страницы http://msdn.microsoft.com/en-us/library/9z9k5ydz.aspx

1 голос
/ 31 августа 2011

Вывод класса отладки работает только в конфигурации отладки.Класс трассировки работает как в Debug, так и в Release.Таким образом, вам не нужно использовать #if DEBUG.

1 голос
/ 31 августа 2011

Если вы строите свой проект в режиме RELEASE, все операторы Debug.WriteLine опускаются, поскольку они украшены атрибутом ConditionalAttribute , установленным на DEBUG.

Это делается во время компиляции. Вы можете проверить это, когда анализируете свои сборки с помощью декомпилятора (такого как .NET Reflector, dotNetPeek). Если вы строите в режиме отладки, вызовы Debug.WriteLine присутствуют. Если вы строите его в режиме RELEASE, звонки отсутствуют.

...