Как узнать, была ли сборка.NET скомпилирована с флагом TRACE или DEBUG
Есть ли способ узнать, была ли сборка скомпилирована с установленным флагом TRACE или DEBUG без изменения сборки?
6 ответов
Единственный лучший способ сделать это - проверить сами скомпилированные сборки. Rotem Bloom нашел здесь очень полезный инструмент под названием "Информация о сборке.NET". После того, как вы установите это, он ассоциирует файлы.dll с самим собой. После установки вы можете просто дважды щелкнуть по сборке, чтобы открыть ее, и она предоставит вам детали сборки, как показано на скриншоте ниже. Там вы можете определить, скомпилирован он или нет.
http://ruchitsurati.net/myfiles/asm_info.jpg
Как программно определить, откомпилирована ли сборка в режиме отладки или выпуска от Скотта Хансельмана.
static bool IsDebug(){
bool rv = false;
#if DEBUG
rv = true;
#endif
return rv;
}
Прямая ссылка на инструмент IsDebug вместе с инструкциями по использованию.
Приложение "IsDebug", упомянутое выше, на самом деле содержит ошибку, которая не отражает правильные атрибуты DubuggableAttributes. Это неправильно предполагает, что если присутствует атрибут DebuggableAttribute, то сборка не оптимизирована JIT. Я предоставил правильную реализацию в своем блоге по адресу:
Вероятно, нет никакого общего способа. Тем не менее, вы можете искать ссылки на Assert
а также Debug
от System.Diagnostics
Пространство имен. Их наличие будет указывать на то, что установлен флаг DEBUG.
То же самое относится и к Trace
и флаг TRACE.
Очевидно, что это не сработает, если исходный код не использует типы из этих пространств имен.