Как узнать, была ли сборка .NET скомпилирована с флагом TRACE или DEBUG - PullRequest
10 голосов
/ 10 марта 2009

Есть ли способ узнать, была ли сборка скомпилирована с установленным флагом TRACE или DEBUG без изменения сборки?

Ответы [ 6 ]

6 голосов
/ 28 апреля 2009

Единственный лучший способ сделать это - проверить сами скомпилированные сборки. Это очень полезный инструмент под названием «Информация сборки .NET», найденный здесь Ротемом Блумом. После того, как вы установите этот файл, он будет открывать файлы .dll самостоятельно. После установки вы можете просто дважды щелкнуть по сборке, чтобы открыть ее, и она предоставит вам детали сборки, как показано на скриншоте ниже. Там вы можете определить, если это отладка скомпилировано или нет.

альтернативный текст http://ruchitsurati.net/myfiles/asm_info.jpg

alt text
(источник: ruchitsurati.net )

LinkText: http://www.codeplex.com/AssemblyInformation

4 голосов
/ 10 марта 2009
3 голосов
/ 10 марта 2009

Прямая ссылка на инструмент IsDebug вместе с инструкциями по использованию.

2 голосов
/ 10 марта 2009
static bool IsDebug(){
 bool rv = false;
 #if DEBUG
 rv = true;
 #endif
 return rv;
}
1 голос
/ 08 декабря 2011

Приложение "IsDebug", упомянутое выше, на самом деле содержит ошибку, не отражающую правильные атрибуты DubuggableAttributes Это неправильно предполагает, что если присутствует атрибут DebuggableAttribute, то сборка не оптимизирована JIT. Я предоставил правильную реализацию в своем блоге по адресу:

Как определить, выполняется ли отладка или выпуск сборки

1 голос
/ 10 марта 2009

Вероятно, нет никакого общего способа. Однако вы можете искать ссылки на Assert и Debug из пространства имен System.Diagnostics. Их наличие будет указывать на то, что установлен флаг DEBUG.

То же самое относится к Trace и флагу TRACE.

Очевидно, что это не будет работать, если исходный код не использует типы из этих пространств имен.

...