Определить режим отладки / выпуска в опубликованной DLL? Без #DEBUG - PullRequest
6 голосов
/ 01 апреля 2011

У меня есть компонент, на который можно ссылаться в некоторых проектах (например, Component.dll). Я публикую это, конечно, в режиме релиза.

В другом проекте (например, Project.exe) я ссылаюсь Component.dll.
Если я соберу Project.exe в режиме отладки, есть ли способ узнать об этом в моей библиотеке Component.dll?

Чтобы уточнить больше: если у меня есть класс и метод с именем Test в Component.dll. Могу ли я сделать что-то вроде:

public void Test(){
    if(Debug.IsInDebugMode)
        ...
}

Имейте в виду, что Component.dll встроен в режим выпуска.

1 Ответ

5 голосов
/ 01 апреля 2011

Независимо от того, построен ли ваш код в режиме выпуска или отладки, не имеет большого значения.Генерируемый IL почти одинаков.Отладочная версия будет иметь атрибут, который джиттер использует для установки параметров компиляции по умолчанию, этот атрибут отсутствует в вашем.Следующее, что имеет значение, это точно как вы отлаживаете или запускаете свое приложение.Важным параметром является Инструменты + Параметры, Отладка, Общие, «Подавить оптимизацию JIT при загрузке модуля».По умолчанию этот флажок установлен.

Что теперь имеет значение, запускается ли ваше приложение отладчиком или нет.Это легко узнать, используйте свойство System.Diagnostics.Debugger.IsAttached.При значении false машинный код, сгенерированный из вашего IL, будет оптимизирован джиттером.Вырожденный случай присоединяет отладчик после запуска кода.Важно, что это не имеет никакого значения для вас, кстати.

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